<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>lib/utilunix.c</title>
<meta name='robots' content='noindex,nofollow' />
<meta name='generator' content='GLOBAL-6.5.7' />
<meta http-equiv='Content-Style-Type' content='text/css' />
<link rel='stylesheet' type='text/css' href='../style.css' />
</head>
<body>
<!-- beginning of fixed guide -->
<div id='guide'><ul>
<li><a href='#L128'><img class='icon' src='../icons/first.png' alt='[^]' /></a></li>
<li><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[v]' /></a></li>
<li><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a></li>
<li><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a></li>
<li><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a></li>
<li><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a></li>
<li class='standout'><span><a href='../files/lib.html'>lib</a>/utilunix.c</span></li>
</ul></div>
<!-- end of fixed guide -->
<a id='TOP' name='TOP'></a><h2 class='header'><a href='../mains.html'>root</a>/<a href='../files/lib.html'>lib</a>/utilunix.c</h2>
<em class='comment'>/* <img class='icon' src='../icons/n_left.png' alt='[previous]' /><img class='icon' src='../icons/n_right.png' alt='[next]' /><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><img class='icon' src='../icons/n_top.png' alt='[top]' /><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1 lib/utilunix.c'  /> */</em>
<hr />
<h2 class='header'>DEFINITIONS</h2>
This source file includes following definitions.
<ol>
<li><a href='#L128' title='Defined at 128.'>i_cache_match</a></li>
<li><a href='#L141' title='Defined at 141.'>i_cache_add</a></li>
<li><a href='#L152' title='Defined at 152.'>my_fork</a></li>
<li><a href='#L182' title='Defined at 182.'>my_system__save_sigaction_handlers</a></li>
<li><a href='#L201' title='Defined at 201.'>my_system__restore_sigaction_handlers</a></li>
<li><a href='#L211' title='Defined at 211.'>my_system_make_arg_array</a></li>
<li><a href='#L241' title='Defined at 241.'>mc_pread_stream</a></li>
<li><a href='#L287' title='Defined at 287.'>get_owner</a></li>
<li><a href='#L315' title='Defined at 315.'>get_group</a></li>
<li><a href='#L346' title='Defined at 346.'>save_stop_handler</a></li>
<li><a href='#L362' title='Defined at 362.'>my_exit</a></li>
<li><a href='#L380' title='Defined at 380.'>my_system</a></li>
<li><a href='#L400' title='Defined at 400.'>my_systeml</a></li>
<li><a href='#L433' title='Defined at 433.'>my_systemv</a></li>
<li><a href='#L481' title='Defined at 481.'>my_systemv_flags</a></li>
<li><a href='#L512' title='Defined at 512.'>mc_popen</a></li>
<li><a href='#L570' title='Defined at 570.'>mc_pread</a></li>
<li><a href='#L634' title='Defined at 634.'>mc_pclose</a></li>
<li><a href='#L669' title='Defined at 669.'>tilde_expand</a></li>
<li><a href='#L716' title='Defined at 716.'>open_error_pipe</a></li>
<li><a href='#L773' title='Defined at 773.'>close_error_pipe</a></li>
<li><a href='#L836' title='Defined at 836.'>custom_canonicalize_pathname</a></li>
<li><a href='#L1059' title='Defined at 1059.'>canonicalize_pathname</a></li>
<li><a href='#L1068' title='Defined at 1068.'>gettimeofday</a></li>
<li><a href='#L1079' title='Defined at 1079.'>mc_realpath</a></li>
<li><a href='#L1258' title='Defined at 1258.'>get_user_permissions</a></li>
<li><a href='#L1309' title='Defined at 1309.'>mc_build_filenamev</a></li>
<li><a href='#L1366' title='Defined at 1366.'>mc_build_filename</a></li>
</ol>
<hr />
<pre>
<a id='L1' name='L1'></a>   1 <em class='comment'>/*</em>
<a id='L2' name='L2'></a>   2 <em class='comment'>   Various utilities - Unix variants</em>
<a id='L3' name='L3'></a>   3 <em class='comment'></em>
<a id='L4' name='L4'></a>   4 <em class='comment'>   Copyright (C) 1994-2020</em>
<a id='L5' name='L5'></a>   5 <em class='comment'>   Free Software Foundation, Inc.</em>
<a id='L6' name='L6'></a>   6 <em class='comment'></em>
<a id='L7' name='L7'></a>   7 <em class='comment'>   Written by:</em>
<a id='L8' name='L8'></a>   8 <em class='comment'>   Miguel de Icaza, 1994, 1995, 1996</em>
<a id='L9' name='L9'></a>   9 <em class='comment'>   Janne Kukonlehto, 1994, 1995, 1996</em>
<a id='L10' name='L10'></a>  10 <em class='comment'>   Dugan Porter, 1994, 1995, 1996</em>
<a id='L11' name='L11'></a>  11 <em class='comment'>   Jakub Jelinek, 1994, 1995, 1996</em>
<a id='L12' name='L12'></a>  12 <em class='comment'>   Mauricio Plaza, 1994, 1995, 1996</em>
<a id='L13' name='L13'></a>  13 <em class='comment'></em>
<a id='L14' name='L14'></a>  14 <em class='comment'>   The mc_realpath routine is mostly from uClibc package, written</em>
<a id='L15' name='L15'></a>  15 <em class='comment'>   by Rick Sladkey &lt;jrs@world.std.com&gt;</em>
<a id='L16' name='L16'></a>  16 <em class='comment'></em>
<a id='L17' name='L17'></a>  17 <em class='comment'>   This file is part of the Midnight Commander.</em>
<a id='L18' name='L18'></a>  18 <em class='comment'></em>
<a id='L19' name='L19'></a>  19 <em class='comment'>   The Midnight Commander is free software: you can redistribute it</em>
<a id='L20' name='L20'></a>  20 <em class='comment'>   and/or modify it under the terms of the GNU General Public License as</em>
<a id='L21' name='L21'></a>  21 <em class='comment'>   published by the Free Software Foundation, either version 3 of the License,</em>
<a id='L22' name='L22'></a>  22 <em class='comment'>   or (at your option) any later version.</em>
<a id='L23' name='L23'></a>  23 <em class='comment'></em>
<a id='L24' name='L24'></a>  24 <em class='comment'>   The Midnight Commander is distributed in the hope that it will be useful,</em>
<a id='L25' name='L25'></a>  25 <em class='comment'>   but WITHOUT ANY WARRANTY; without even the implied warranty of</em>
<a id='L26' name='L26'></a>  26 <em class='comment'>   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</em>
<a id='L27' name='L27'></a>  27 <em class='comment'>   GNU General Public License for more details.</em>
<a id='L28' name='L28'></a>  28 <em class='comment'></em>
<a id='L29' name='L29'></a>  29 <em class='comment'>   You should have received a copy of the GNU General Public License</em>
<a id='L30' name='L30'></a>  30 <em class='comment'>   along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</em>
<a id='L31' name='L31'></a>  31 <em class='comment'> */</em>
<a id='L32' name='L32'></a>  32 
<a id='L33' name='L33'></a>  33 <em class='comment'>/** \file utilunix.c</em>
<a id='L34' name='L34'></a>  34 <em class='comment'> *  \brief Source: various utilities - Unix variant</em>
<a id='L35' name='L35'></a>  35 <em class='comment'> */</em>
<a id='L36' name='L36'></a>  36 
<a id='L37' name='L37'></a>  37 <em class='sharp'>#include</em> &lt;config.h&gt;
<a id='L38' name='L38'></a>  38 
<a id='L39' name='L39'></a>  39 <em class='sharp'>#include</em> &lt;ctype.h&gt;
<a id='L40' name='L40'></a>  40 <em class='sharp'>#include</em> &lt;errno.h&gt;
<a id='L41' name='L41'></a>  41 <em class='sharp'>#include</em> &lt;limits.h&gt;
<a id='L42' name='L42'></a>  42 <em class='sharp'>#include</em> &lt;signal.h&gt;
<a id='L43' name='L43'></a>  43 <em class='sharp'>#include</em> &lt;stdarg.h&gt;
<a id='L44' name='L44'></a>  44 <em class='sharp'>#include</em> &lt;stdio.h&gt;
<a id='L45' name='L45'></a>  45 <em class='sharp'>#include</em> &lt;stdlib.h&gt;
<a id='L46' name='L46'></a>  46 <em class='sharp'>#include</em> &lt;string.h&gt;
<a id='L47' name='L47'></a>  47 <em class='sharp'>#ifdef</em> <a href='../Y/HAVE_SYS_PARAM_H.html' title='Multiple used in 7 places.'>HAVE_SYS_PARAM_H</a>
<a id='L48' name='L48'></a>  48 <em class='sharp'>#include</em> &lt;sys/param.h&gt;
<a id='L49' name='L49'></a>  49 <em class='sharp'>#endif</em>
<a id='L50' name='L50'></a>  50 <em class='sharp'>#include</em> &lt;sys/types.h&gt;
<a id='L51' name='L51'></a>  51 <em class='sharp'>#include</em> &lt;sys/stat.h&gt;
<a id='L52' name='L52'></a>  52 <em class='sharp'>#ifdef</em> <a href='../Y/HAVE_SYS_SELECT_H.html' title='Multiple used in 8 places.'>HAVE_SYS_SELECT_H</a>
<a id='L53' name='L53'></a>  53 <em class='sharp'>#include</em> &lt;sys/select.h&gt;
<a id='L54' name='L54'></a>  54 <em class='sharp'>#endif</em>
<a id='L55' name='L55'></a>  55 <em class='sharp'>#include</em> &lt;sys/wait.h&gt;
<a id='L56' name='L56'></a>  56 <em class='sharp'>#ifdef</em> <a href='../Y/HAVE_SYS_IOCTL_H.html' title='Multiple used in 11 places.'>HAVE_SYS_IOCTL_H</a>
<a id='L57' name='L57'></a>  57 <em class='sharp'>#include</em> &lt;sys/ioctl.h&gt;
<a id='L58' name='L58'></a>  58 <em class='sharp'>#endif</em>
<a id='L59' name='L59'></a>  59 <em class='sharp'>#ifdef</em> <a href='../Y/HAVE_GET_PROCESS_STATS.html' title='Multiple used in 2 places.'>HAVE_GET_PROCESS_STATS</a>
<a id='L60' name='L60'></a>  60 <em class='sharp'>#include</em> &lt;sys/procstats.h&gt;
<a id='L61' name='L61'></a>  61 <em class='sharp'>#endif</em>
<a id='L62' name='L62'></a>  62 <em class='sharp'>#include</em> &lt;pwd.h&gt;
<a id='L63' name='L63'></a>  63 <em class='sharp'>#include</em> &lt;grp.h&gt;
<a id='L64' name='L64'></a>  64 
<a id='L65' name='L65'></a>  65 <em class='sharp'>#include</em> "<a href='lib--global.h.html'>lib/global.h</a>"
<a id='L66' name='L66'></a>  66 
<a id='L67' name='L67'></a>  67 <em class='sharp'>#include</em> "<a href='lib--unixcompat.h.html'>lib/unixcompat.h</a>"
<a id='L68' name='L68'></a>  68 <em class='sharp'>#include</em> "<a href='lib--vfs--vfs.h.html'>lib/vfs/vfs.h</a>"        <em class='comment'>/* VFS_ENCODING_PREFIX */</em>
<a id='L69' name='L69'></a>  69 <em class='sharp'>#include</em> "<a href='lib--strutil.h.html'>lib/strutil.h</a>"        <em class='comment'>/* str_move() */</em>
<a id='L70' name='L70'></a>  70 <em class='sharp'>#include</em> "<a href='../I/util.h.html'>lib/util.h</a>"
<a id='L71' name='L71'></a>  71 <em class='sharp'>#include</em> "<a href='lib--widget.h.html'>lib/widget.h</a>"         <em class='comment'>/* message() */</em>
<a id='L72' name='L72'></a>  72 <em class='sharp'>#include</em> "<a href='lib--vfs--xdirentry.h.html'>lib/vfs/xdirentry.h</a>"
<a id='L73' name='L73'></a>  73 
<a id='L74' name='L74'></a>  74 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L75' name='L75'></a>  75 <em class='sharp'>#include</em> "<a href='lib--charsets.h.html'>lib/charsets.h</a>"
<a id='L76' name='L76'></a>  76 <em class='sharp'>#endif</em>
<a id='L77' name='L77'></a>  77 
<a id='L78' name='L78'></a>  78 <em class='sharp'>#include</em> "<a href='lib--utilunix.h.html'>utilunix.h</a>"
<a id='L79' name='L79'></a>  79 
<a id='L80' name='L80'></a>  80 <em class='comment'>/*** global variables ****************************************************************************/</em>
<a id='L81' name='L81'></a>  81 
<a id='L82' name='L82'></a>  82 <strong class='reserved'>struct</strong> <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> <a href='../Y/startup_handler.html' title='Multiple used in 6 places.'>startup_handler</a>;
<a id='L83' name='L83'></a>  83 
<a id='L84' name='L84'></a>  84 <em class='comment'>/*** file scope macro definitions ****************************************************************/</em>
<a id='L85' name='L85'></a>  85 
<a id='L86' name='L86'></a>  86 <em class='sharp'>#define</em> <a href='../R/UID_CACHE_SIZE.html' title='Multiple referred from 4 places.'>UID_CACHE_SIZE</a> 200
<a id='L87' name='L87'></a>  87 <em class='sharp'>#define</em> <a href='../R/GID_CACHE_SIZE.html' title='Multiple referred from 3 places.'>GID_CACHE_SIZE</a> 30
<a id='L88' name='L88'></a>  88 
<a id='L89' name='L89'></a>  89 <em class='comment'>/* Pipes are guaranteed to be able to hold at least 4096 bytes */</em>
<a id='L90' name='L90'></a>  90 <em class='comment'>/* More than that would be unportable */</em>
<a id='L91' name='L91'></a>  91 <em class='sharp'>#define</em> <a href='../S/lib--utilunix.c.html#L776' title='Referred from 776 in lib/utilunix.c.'>MAX_PIPE_SIZE</a> 4096
<a id='L92' name='L92'></a>  92 
<a id='L93' name='L93'></a>  93 <em class='comment'>/*** file scope type declarations ****************************************************************/</em>
<a id='L94' name='L94'></a>  94 
<a id='L95' name='L95'></a>  95 <strong class='reserved'>typedef</strong> <strong class='reserved'>struct</strong>
<a id='L96' name='L96'></a>  96 <em class='brace'>{</em>
<a id='L97' name='L97'></a>  97     <strong class='reserved'>int</strong> <a href='../Y/index.html' title='Multiple used in 19 places.'>index</a>;
<a id='L98' name='L98'></a>  98     <strong class='reserved'>char</strong> *<a href='../Y/string.html' title='Multiple used in 50 places.'>string</a>;
<a id='L99' name='L99'></a>  99 <em class='brace'>}</em> <a href='../R/int_cache.html' title='Multiple referred from 4 places.'>int_cache</a>;
<a id='L100' name='L100'></a> 100 
<a id='L101' name='L101'></a> 101 <strong class='reserved'>typedef</strong> <strong class='reserved'>enum</strong>
<a id='L102' name='L102'></a> 102 <em class='brace'>{</em>
<a id='L103' name='L103'></a> 103     <a href='../R/FORK_ERROR.html' title='Multiple referred from 4 places.'>FORK_ERROR</a> = -1,
<a id='L104' name='L104'></a> 104     <a href='../R/FORK_CHILD.html' title='Multiple referred from 2 places.'>FORK_CHILD</a>,
<a id='L105' name='L105'></a> 105     <a href='../S/lib--utilunix.c.html#L172' title='Referred from 172 in lib/utilunix.c.'>FORK_PARENT</a>,
<a id='L106' name='L106'></a> 106 <em class='brace'>}</em> <a href='../R/my_fork_state_t.html' title='Multiple referred from 2 places.'>my_fork_state_t</a>;
<a id='L107' name='L107'></a> 107 
<a id='L108' name='L108'></a> 108 <strong class='reserved'>typedef</strong> <strong class='reserved'>struct</strong>
<a id='L109' name='L109'></a> 109 <em class='brace'>{</em>
<a id='L110' name='L110'></a> 110     <strong class='reserved'>struct</strong> <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> <a href='../Y/intr.html' title='Multiple used in 3 places.'>intr</a>;
<a id='L111' name='L111'></a> 111     <strong class='reserved'>struct</strong> <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> <a href='../Y/quit.html' title='Multiple used in 17 places.'>quit</a>;
<a id='L112' name='L112'></a> 112     <strong class='reserved'>struct</strong> <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> <a href='../Y/stop.html' title='Multiple used in 10 places.'>stop</a>;
<a id='L113' name='L113'></a> 113 <em class='brace'>}</em> <a href='../R/my_system_sigactions_t.html' title='Multiple referred from 3 places.'>my_system_sigactions_t</a>;
<a id='L114' name='L114'></a> 114 
<a id='L115' name='L115'></a> 115 <em class='comment'>/*** file scope variables ************************************************************************/</em>
<a id='L116' name='L116'></a> 116 
<a id='L117' name='L117'></a> 117 <strong class='reserved'>static</strong> <a href='../S/lib--utilunix.c.html#L99' title='Defined at 99 in lib/utilunix.c.'>int_cache</a> <a href='../S/src--vfs--smbfs--helpers--include--smb.h.html#L536' title='Defined at 536 in src/vfs/smbfs/helpers/include/smb.h.'>uid_cache</a>[<a href='../D/UID_CACHE_SIZE.html' title='Multiple defined in 2 places.'>UID_CACHE_SIZE</a>];
<a id='L118' name='L118'></a> 118 <strong class='reserved'>static</strong> <a href='../S/lib--utilunix.c.html#L99' title='Defined at 99 in lib/utilunix.c.'>int_cache</a> <a href='../Y/gid_cache.html' title='Multiple used in 3 places.'>gid_cache</a>[<a href='../S/lib--utilunix.c.html#L87' title='Defined at 87 in lib/utilunix.c.'>GID_CACHE_SIZE</a>];
<a id='L119' name='L119'></a> 119 
<a id='L120' name='L120'></a> 120 <strong class='reserved'>static</strong> <strong class='reserved'>int</strong> <a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[2];       <em class='comment'>/* File descriptors of error pipe */</em>
<a id='L121' name='L121'></a> 121 <strong class='reserved'>static</strong> <strong class='reserved'>int</strong> <a href='../Y/old_error.html' title='Multiple used in 6 places.'>old_error</a>;           <em class='comment'>/* File descriptor of old standard error */</em>
<a id='L122' name='L122'></a> 122 
<a id='L123' name='L123'></a> 123 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L124' name='L124'></a> 124 <em class='comment'>/*** file scope functions ************************************************************************/</em>
<a id='L125' name='L125'></a> 125 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L126' name='L126'></a> 126 
<a id='L127' name='L127'></a> 127 <strong class='reserved'>static</strong> <strong class='reserved'>char</strong> *
<a id='L128' name='L128'></a> 128 <a href='../R/i_cache_match.html' title='Multiple referred from 2 places.'>i_cache_match</a> (<strong class='reserved'>int</strong> <a href='../Y/id.html' title='Multiple used in 160 places.'>id</a>, <a href='../S/lib--utilunix.c.html#L99' title='Defined at 99 in lib/utilunix.c.'>int_cache</a> * <a href='../Y/cache.html' title='Multiple used in 54 places.'>cache</a>, <strong class='reserved'>int</strong> <a href='../Y/size.html' title='Multiple used in 387 places.'>size</a>)
     <em class='comment'>/* <img class='icon' src='../icons/n_left.png' alt='[previous]' /><a href='#L141'><img class='icon' src='../icons/right.png' alt='[next]' /></a><img class='icon' src='../icons/n_first.png' alt='[first]' /><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+128 lib/utilunix.c'  /> */</em>
<a id='L129' name='L129'></a> 129 <em class='brace'>{</em>
<a id='L130' name='L130'></a> 130     <strong class='reserved'>int</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>;
<a id='L131' name='L131'></a> 131 
<a id='L132' name='L132'></a> 132     <strong class='reserved'>for</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = 0; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/size.html' title='Multiple used in 387 places.'>size</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L133' name='L133'></a> 133         <strong class='reserved'>if</strong> (<a href='../Y/cache.html' title='Multiple used in 54 places.'>cache</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>].<a href='../Y/index.html' title='Multiple used in 19 places.'>index</a> == <a href='../Y/id.html' title='Multiple used in 160 places.'>id</a>)
<a id='L134' name='L134'></a> 134             <strong class='reserved'>return</strong> <a href='../Y/cache.html' title='Multiple used in 54 places.'>cache</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>].<a href='../Y/string.html' title='Multiple used in 50 places.'>string</a>;
<a id='L135' name='L135'></a> 135     <strong class='reserved'>return</strong> 0;
<a id='L136' name='L136'></a> 136 <em class='brace'>}</em>
<a id='L137' name='L137'></a> 137 
<a id='L138' name='L138'></a> 138 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L139' name='L139'></a> 139 
<a id='L140' name='L140'></a> 140 <strong class='reserved'>static</strong> <strong class='reserved'>void</strong>
<a id='L141' name='L141'></a> 141 <a href='../R/i_cache_add.html' title='Multiple referred from 2 places.'>i_cache_add</a> (<strong class='reserved'>int</strong> <a href='../Y/id.html' title='Multiple used in 160 places.'>id</a>, <a href='../S/lib--utilunix.c.html#L99' title='Defined at 99 in lib/utilunix.c.'>int_cache</a> * <a href='../Y/cache.html' title='Multiple used in 54 places.'>cache</a>, <strong class='reserved'>int</strong> <a href='../Y/size.html' title='Multiple used in 387 places.'>size</a>, <strong class='reserved'>char</strong> *<a href='../Y/text.html' title='Multiple used in 945 places.'>text</a>, <strong class='reserved'>int</strong> *<a href='../Y/last.html' title='Multiple used in 36 places.'>last</a>)
     <em class='comment'>/* <a href='#L128'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L152'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+141 lib/utilunix.c'  /> */</em>
<a id='L142' name='L142'></a> 142 <em class='brace'>{</em>
<a id='L143' name='L143'></a> 143     <a href='../Y/g_free.html' title='Multiple used in 1230 places.'>g_free</a> (<a href='../Y/cache.html' title='Multiple used in 54 places.'>cache</a>[*<a href='../Y/last.html' title='Multiple used in 36 places.'>last</a>].<a href='../Y/string.html' title='Multiple used in 50 places.'>string</a>);
<a id='L144' name='L144'></a> 144     <a href='../Y/cache.html' title='Multiple used in 54 places.'>cache</a>[*<a href='../Y/last.html' title='Multiple used in 36 places.'>last</a>].<a href='../Y/string.html' title='Multiple used in 50 places.'>string</a> = <a href='../Y/g_strdup.html' title='Multiple used in 444 places.'>g_strdup</a> (<a href='../Y/text.html' title='Multiple used in 945 places.'>text</a>);
<a id='L145' name='L145'></a> 145     <a href='../Y/cache.html' title='Multiple used in 54 places.'>cache</a>[*<a href='../Y/last.html' title='Multiple used in 36 places.'>last</a>].<a href='../Y/index.html' title='Multiple used in 19 places.'>index</a> = <a href='../Y/id.html' title='Multiple used in 160 places.'>id</a>;
<a id='L146' name='L146'></a> 146     *<a href='../Y/last.html' title='Multiple used in 36 places.'>last</a> = ((*<a href='../Y/last.html' title='Multiple used in 36 places.'>last</a>) + 1) % <a href='../Y/size.html' title='Multiple used in 387 places.'>size</a>;
<a id='L147' name='L147'></a> 147 <em class='brace'>}</em>
<a id='L148' name='L148'></a> 148 
<a id='L149' name='L149'></a> 149 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L150' name='L150'></a> 150 
<a id='L151' name='L151'></a> 151 <strong class='reserved'>static</strong> <a href='../S/lib--utilunix.c.html#L106' title='Defined at 106 in lib/utilunix.c.'>my_fork_state_t</a>
<a id='L152' name='L152'></a> 152 <a href='../S/lib--utilunix.c.html#L441' title='Referred from 441 in lib/utilunix.c.'>my_fork</a> (<strong class='reserved'>void</strong>)
     <em class='comment'>/* <a href='#L141'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L182'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+152 lib/utilunix.c'  /> */</em>
<a id='L153' name='L153'></a> 153 <em class='brace'>{</em>
<a id='L154' name='L154'></a> 154     <a href='../Y/pid_t.html' title='Multiple used in 22 places.'>pid_t</a> <a href='../Y/pid.html' title='Multiple used in 64 places.'>pid</a>;
<a id='L155' name='L155'></a> 155 
<a id='L156' name='L156'></a> 156     <a href='../Y/pid.html' title='Multiple used in 64 places.'>pid</a> = <a href='../S/tests--lib--utilunix__my_system-common.c.html#L184' title='Defined at 184 in tests/lib/utilunix__my_system-common.c.'>fork</a> ();
<a id='L157' name='L157'></a> 157 
<a id='L158' name='L158'></a> 158     <strong class='reserved'>if</strong> (<a href='../Y/pid.html' title='Multiple used in 64 places.'>pid</a> &lt; 0)
<a id='L159' name='L159'></a> 159     <em class='brace'>{</em>
<a id='L160' name='L160'></a> 160         <a href='../Y/fprintf.html' title='Multiple used in 106 places.'>fprintf</a> (<a href='../Y/stderr.html' title='Multiple used in 79 places.'>stderr</a>, "\n\nfork () = -1\n");
<a id='L161' name='L161'></a> 161         <strong class='reserved'>return</strong> <a href='../S/lib--utilunix.c.html#L103' title='Defined at 103 in lib/utilunix.c.'>FORK_ERROR</a>;
<a id='L162' name='L162'></a> 162     <em class='brace'>}</em>
<a id='L163' name='L163'></a> 163 
<a id='L164' name='L164'></a> 164     <strong class='reserved'>if</strong> (<a href='../Y/pid.html' title='Multiple used in 64 places.'>pid</a> == 0)
<a id='L165' name='L165'></a> 165         <strong class='reserved'>return</strong> <a href='../S/lib--utilunix.c.html#L104' title='Defined at 104 in lib/utilunix.c.'>FORK_CHILD</a>;
<a id='L166' name='L166'></a> 166 
<a id='L167' name='L167'></a> 167     <strong class='reserved'>while</strong> (<a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>)
<a id='L168' name='L168'></a> 168     <em class='brace'>{</em>
<a id='L169' name='L169'></a> 169         <strong class='reserved'>int</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a> = 0;
<a id='L170' name='L170'></a> 170 
<a id='L171' name='L171'></a> 171         <strong class='reserved'>if</strong> (<a href='../Y/waitpid.html' title='Multiple used in 8 places.'>waitpid</a> (<a href='../Y/pid.html' title='Multiple used in 64 places.'>pid</a>, &amp;<a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>, 0) &gt; 0)
<a id='L172' name='L172'></a> 172             <strong class='reserved'>return</strong> <a href='../S/src--subshell--common.c.html#L137' title='Defined at 137 in src/subshell/common.c.'>WEXITSTATUS</a> (<a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>) == 0 ? <a href='../S/lib--utilunix.c.html#L105' title='Defined at 105 in lib/utilunix.c.'>FORK_PARENT</a> : <a href='../S/lib--utilunix.c.html#L103' title='Defined at 103 in lib/utilunix.c.'>FORK_ERROR</a>;
<a id='L173' name='L173'></a> 173 
<a id='L174' name='L174'></a> 174         <strong class='reserved'>if</strong> (<a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> != <a href='../Y/EINTR.html' title='Multiple used in 45 places.'>EINTR</a>)
<a id='L175' name='L175'></a> 175             <strong class='reserved'>return</strong> <a href='../S/lib--utilunix.c.html#L103' title='Defined at 103 in lib/utilunix.c.'>FORK_ERROR</a>;
<a id='L176' name='L176'></a> 176     <em class='brace'>}</em>
<a id='L177' name='L177'></a> 177 <em class='brace'>}</em>
<a id='L178' name='L178'></a> 178 
<a id='L179' name='L179'></a> 179 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L180' name='L180'></a> 180 
<a id='L181' name='L181'></a> 181 <strong class='reserved'>static</strong> <strong class='reserved'>void</strong>
<a id='L182' name='L182'></a> 182 <a href='../S/lib--utilunix.c.html#L439' title='Referred from 439 in lib/utilunix.c.'>my_system__save_sigaction_handlers</a> (<a href='../S/lib--utilunix.c.html#L113' title='Defined at 113 in lib/utilunix.c.'>my_system_sigactions_t</a> * <a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>)
     <em class='comment'>/* <a href='#L152'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L201'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+182 lib/utilunix.c'  /> */</em>
<a id='L183' name='L183'></a> 183 <em class='brace'>{</em>
<a id='L184' name='L184'></a> 184     <strong class='reserved'>struct</strong> <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> <a href='../Y/ignore.html' title='Multiple used in 12 places.'>ignore</a>;
<a id='L185' name='L185'></a> 185 
<a id='L186' name='L186'></a> 186     <a href='../Y/memset.html' title='Multiple used in 162 places.'>memset</a> (&amp;<a href='../Y/ignore.html' title='Multiple used in 12 places.'>ignore</a>, 0, <strong class='reserved'>sizeof</strong> (<a href='../Y/ignore.html' title='Multiple used in 12 places.'>ignore</a>));
<a id='L187' name='L187'></a> 187     <a href='../Y/ignore.html' title='Multiple used in 12 places.'>ignore</a>.<a href='../Y/sa_handler.html' title='Multiple used in 8 places.'>sa_handler</a> = <a href='../Y/SIG_IGN.html' title='Multiple used in 3 places.'>SIG_IGN</a>;
<a id='L188' name='L188'></a> 188     <a href='../S/tests--lib--utilunix__my_system-common.c.html#L45' title='Defined at 45 in tests/lib/utilunix__my_system-common.c.'>sigemptyset</a> (&amp;<a href='../Y/ignore.html' title='Multiple used in 12 places.'>ignore</a>.<a href='../Y/sa_mask.html' title='Multiple used in 7 places.'>sa_mask</a>);
<a id='L189' name='L189'></a> 189 
<a id='L190' name='L190'></a> 190     <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> (<a href='../Y/SIGINT.html' title='Multiple used in 9 places.'>SIGINT</a>, &amp;<a href='../Y/ignore.html' title='Multiple used in 12 places.'>ignore</a>, &amp;<a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>-&gt;<a href='../Y/intr.html' title='Multiple used in 3 places.'>intr</a>);
<a id='L191' name='L191'></a> 191     <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> (<a href='../Y/SIGQUIT.html' title='Multiple used in 6 places.'>SIGQUIT</a>, &amp;<a href='../Y/ignore.html' title='Multiple used in 12 places.'>ignore</a>, &amp;<a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>-&gt;<a href='../Y/quit.html' title='Multiple used in 17 places.'>quit</a>);
<a id='L192' name='L192'></a> 192 
<a id='L193' name='L193'></a> 193     <em class='comment'>/* Restore the original SIGTSTP handler, we don't want ncurses' */</em>
<a id='L194' name='L194'></a> 194     <em class='comment'>/* handler messing the screen after the SIGCONT */</em>
<a id='L195' name='L195'></a> 195     <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> (<a href='../Y/SIGTSTP.html' title='Multiple used in 12 places.'>SIGTSTP</a>, &amp;<a href='../Y/startup_handler.html' title='Multiple used in 6 places.'>startup_handler</a>, &amp;<a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>-&gt;<a href='../Y/stop.html' title='Multiple used in 10 places.'>stop</a>);
<a id='L196' name='L196'></a> 196 <em class='brace'>}</em>
<a id='L197' name='L197'></a> 197 
<a id='L198' name='L198'></a> 198 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L199' name='L199'></a> 199 
<a id='L200' name='L200'></a> 200 <strong class='reserved'>static</strong> <strong class='reserved'>void</strong>
<a id='L201' name='L201'></a> 201 <a href='../S/lib--utilunix.c.html#L463' title='Referred from 463 in lib/utilunix.c.'>my_system__restore_sigaction_handlers</a> (<a href='../S/lib--utilunix.c.html#L113' title='Defined at 113 in lib/utilunix.c.'>my_system_sigactions_t</a> * <a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>)
     <em class='comment'>/* <a href='#L182'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L211'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+201 lib/utilunix.c'  /> */</em>
<a id='L202' name='L202'></a> 202 <em class='brace'>{</em>
<a id='L203' name='L203'></a> 203     <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> (<a href='../Y/SIGINT.html' title='Multiple used in 9 places.'>SIGINT</a>, &amp;<a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>-&gt;<a href='../Y/intr.html' title='Multiple used in 3 places.'>intr</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L204' name='L204'></a> 204     <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> (<a href='../Y/SIGQUIT.html' title='Multiple used in 6 places.'>SIGQUIT</a>, &amp;<a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>-&gt;<a href='../Y/quit.html' title='Multiple used in 17 places.'>quit</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L205' name='L205'></a> 205     <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> (<a href='../Y/SIGTSTP.html' title='Multiple used in 12 places.'>SIGTSTP</a>, &amp;<a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>-&gt;<a href='../Y/stop.html' title='Multiple used in 10 places.'>stop</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L206' name='L206'></a> 206 <em class='brace'>}</em>
<a id='L207' name='L207'></a> 207 
<a id='L208' name='L208'></a> 208 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L209' name='L209'></a> 209 
<a id='L210' name='L210'></a> 210 <strong class='reserved'>static</strong> <a href='../Y/GPtrArray.html' title='Multiple used in 61 places.'>GPtrArray</a> *
<a id='L211' name='L211'></a> 211 <a href='../S/lib--utilunix.c.html#L487' title='Referred from 487 in lib/utilunix.c.'>my_system_make_arg_array</a> (<strong class='reserved'>int</strong> <a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a>, <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>, <strong class='reserved'>char</strong> **<a href='../Y/execute_name.html' title='Multiple used in 8 places.'>execute_name</a>)
     <em class='comment'>/* <a href='#L201'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L241'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+211 lib/utilunix.c'  /> */</em>
<a id='L212' name='L212'></a> 212 <em class='brace'>{</em>
<a id='L213' name='L213'></a> 213     <a href='../Y/GPtrArray.html' title='Multiple used in 61 places.'>GPtrArray</a> *<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>;
<a id='L214' name='L214'></a> 214 
<a id='L215' name='L215'></a> 215     <a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a> = <a href='../Y/g_ptr_array_new.html' title='Multiple used in 29 places.'>g_ptr_array_new</a> ();
<a id='L216' name='L216'></a> 216 
<a id='L217' name='L217'></a> 217     <strong class='reserved'>if</strong> ((<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a> &amp; <a href='../S/lib--utilunix.h.html#L12' title='Defined at 12 in lib/utilunix.h.'>EXECUTE_AS_SHELL</a>) != 0)
<a id='L218' name='L218'></a> 218     <em class='brace'>{</em>
<a id='L219' name='L219'></a> 219         <a href='../Y/g_ptr_array_add.html' title='Multiple used in 52 places.'>g_ptr_array_add</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, (<a href='../Y/gpointer.html' title='Multiple used in 86 places.'>gpointer</a>) <a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>);
<a id='L220' name='L220'></a> 220         <a href='../Y/g_ptr_array_add.html' title='Multiple used in 52 places.'>g_ptr_array_add</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, (<a href='../Y/gpointer.html' title='Multiple used in 86 places.'>gpointer</a>) "-c");
<a id='L221' name='L221'></a> 221         *<a href='../Y/execute_name.html' title='Multiple used in 8 places.'>execute_name</a> = <a href='../Y/g_strdup.html' title='Multiple used in 444 places.'>g_strdup</a> (<a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>);
<a id='L222' name='L222'></a> 222     <em class='brace'>}</em>
<a id='L223' name='L223'></a> 223     <strong class='reserved'>else</strong>
<a id='L224' name='L224'></a> 224     <em class='brace'>{</em>
<a id='L225' name='L225'></a> 225         <strong class='reserved'>char</strong> *<a href='../Y/shell_token.html' title='Multiple used in 4 places.'>shell_token</a>;
<a id='L226' name='L226'></a> 226 
<a id='L227' name='L227'></a> 227         <a href='../Y/shell_token.html' title='Multiple used in 4 places.'>shell_token</a> = <a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a> ? <a href='../D/strchr.html' title='Multiple defined in 2 places.'>strchr</a> (<a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>, ' ') : <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L228' name='L228'></a> 228         <strong class='reserved'>if</strong> (<a href='../Y/shell_token.html' title='Multiple used in 4 places.'>shell_token</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L229' name='L229'></a> 229             *<a href='../Y/execute_name.html' title='Multiple used in 8 places.'>execute_name</a> = <a href='../Y/g_strdup.html' title='Multiple used in 444 places.'>g_strdup</a> (<a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>);
<a id='L230' name='L230'></a> 230         <strong class='reserved'>else</strong>
<a id='L231' name='L231'></a> 231             *<a href='../Y/execute_name.html' title='Multiple used in 8 places.'>execute_name</a> = <a href='../Y/g_strndup.html' title='Multiple used in 66 places.'>g_strndup</a> (<a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>, (<a href='../Y/gsize.html' title='Multiple used in 187 places.'>gsize</a>) (<a href='../Y/shell_token.html' title='Multiple used in 4 places.'>shell_token</a> - <a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>));
<a id='L232' name='L232'></a> 232 
<a id='L233' name='L233'></a> 233         <a href='../Y/g_ptr_array_add.html' title='Multiple used in 52 places.'>g_ptr_array_add</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, (<a href='../Y/gpointer.html' title='Multiple used in 86 places.'>gpointer</a>) <a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>);
<a id='L234' name='L234'></a> 234     <em class='brace'>}</em>
<a id='L235' name='L235'></a> 235     <strong class='reserved'>return</strong> <a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>;
<a id='L236' name='L236'></a> 236 <em class='brace'>}</em>
<a id='L237' name='L237'></a> 237 
<a id='L238' name='L238'></a> 238 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L239' name='L239'></a> 239 
<a id='L240' name='L240'></a> 240 <strong class='reserved'>static</strong> <strong class='reserved'>void</strong>
<a id='L241' name='L241'></a> 241 <a href='../R/mc_pread_stream.html' title='Multiple referred from 2 places.'>mc_pread_stream</a> (<a href='../S/lib--util.h.html#L101' title='Defined at 101 in lib/util.h.'>mc_pipe_stream_t</a> * <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>, <strong class='reserved'>const</strong> <a href='../Y/fd_set.html' title='Multiple used in 28 places.'>fd_set</a> * <a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>)
     <em class='comment'>/* <a href='#L211'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L287'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+241 lib/utilunix.c'  /> */</em>
<a id='L242' name='L242'></a> 242 <em class='brace'>{</em>
<a id='L243' name='L243'></a> 243     <a href='../Y/size_t.html' title='Multiple used in 726 places.'>size_t</a> <a href='../Y/buf_len.html' title='Multiple used in 12 places.'>buf_len</a>;
<a id='L244' name='L244'></a> 244     <a href='../Y/ssize_t.html' title='Multiple used in 151 places.'>ssize_t</a> <a href='../Y/read_len.html' title='Multiple used in 6 places.'>read_len</a>;
<a id='L245' name='L245'></a> 245 
<a id='L246' name='L246'></a> 246     <strong class='reserved'>if</strong> (!<a href='../Y/FD_ISSET.html' title='Multiple used in 18 places.'>FD_ISSET</a> (<a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>, <a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>))
<a id='L247' name='L247'></a> 247     <em class='brace'>{</em>
<a id='L248' name='L248'></a> 248         <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L35' title='Defined at 35 in lib/util.h.'>MC_PIPE_STREAM_UNREAD</a>;
<a id='L249' name='L249'></a> 249         <strong class='reserved'>return</strong>;
<a id='L250' name='L250'></a> 250     <em class='brace'>}</em>
<a id='L251' name='L251'></a> 251 
<a id='L252' name='L252'></a> 252     <a href='../Y/buf_len.html' title='Multiple used in 12 places.'>buf_len</a> = (<a href='../Y/size_t.html' title='Multiple used in 726 places.'>size_t</a>) <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a>;
<a id='L253' name='L253'></a> 253 
<a id='L254' name='L254'></a> 254     <strong class='reserved'>if</strong> (<a href='../Y/buf_len.html' title='Multiple used in 12 places.'>buf_len</a> &gt;= <a href='../S/lib--util.h.html#L33' title='Defined at 33 in lib/util.h.'>MC_PIPE_BUFSIZE</a>)
<a id='L255' name='L255'></a> 255         <a href='../Y/buf_len.html' title='Multiple used in 12 places.'>buf_len</a> = <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/null_term.html' title='Multiple used in 9 places.'>null_term</a> ? <a href='../S/lib--util.h.html#L33' title='Defined at 33 in lib/util.h.'>MC_PIPE_BUFSIZE</a> - 1 : <a href='../S/lib--util.h.html#L33' title='Defined at 33 in lib/util.h.'>MC_PIPE_BUFSIZE</a>;
<a id='L256' name='L256'></a> 256 
<a id='L257' name='L257'></a> 257     <strong class='reserved'>do</strong>
<a id='L258' name='L258'></a> 258     <em class='brace'>{</em>
<a id='L259' name='L259'></a> 259         <a href='../Y/read_len.html' title='Multiple used in 6 places.'>read_len</a> = <a href='../Y/read.html' title='Multiple used in 82 places.'>read</a> (<a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>, <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/buf.html' title='Multiple used in 954 places.'>buf</a>, <a href='../Y/buf_len.html' title='Multiple used in 12 places.'>buf_len</a>);
<a id='L260' name='L260'></a> 260     <em class='brace'>}</em>
<a id='L261' name='L261'></a> 261     <strong class='reserved'>while</strong> (<a href='../Y/read_len.html' title='Multiple used in 6 places.'>read_len</a> &lt; 0 &amp;&amp; <a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> == <a href='../Y/EINTR.html' title='Multiple used in 45 places.'>EINTR</a>);
<a id='L262' name='L262'></a> 262 
<a id='L263' name='L263'></a> 263     <strong class='reserved'>if</strong> (<a href='../Y/read_len.html' title='Multiple used in 6 places.'>read_len</a> &lt; 0)
<a id='L264' name='L264'></a> 264     <em class='brace'>{</em>
<a id='L265' name='L265'></a> 265         <em class='comment'>/* reading error */</em>
<a id='L266' name='L266'></a> 266         <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L39' title='Defined at 39 in lib/util.h.'>MC_PIPE_ERROR_READ</a>;
<a id='L267' name='L267'></a> 267         <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> = <a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a>;
<a id='L268' name='L268'></a> 268     <em class='brace'>}</em>
<a id='L269' name='L269'></a> 269     <strong class='reserved'>else</strong> <strong class='reserved'>if</strong> (<a href='../Y/read_len.html' title='Multiple used in 6 places.'>read_len</a> == 0)
<a id='L270' name='L270'></a> 270         <em class='comment'>/* EOF */</em>
<a id='L271' name='L271'></a> 271         <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L34' title='Defined at 34 in lib/util.h.'>MC_PIPE_STREAM_EOF</a>;
<a id='L272' name='L272'></a> 272     <strong class='reserved'>else</strong>
<a id='L273' name='L273'></a> 273     <em class='brace'>{</em>
<a id='L274' name='L274'></a> 274         <em class='comment'>/* success */</em>
<a id='L275' name='L275'></a> 275         <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../Y/read_len.html' title='Multiple used in 6 places.'>read_len</a>;
<a id='L276' name='L276'></a> 276 
<a id='L277' name='L277'></a> 277         <strong class='reserved'>if</strong> (<a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/null_term.html' title='Multiple used in 9 places.'>null_term</a>)
<a id='L278' name='L278'></a> 278             <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/buf.html' title='Multiple used in 954 places.'>buf</a>[(<a href='../Y/size_t.html' title='Multiple used in 726 places.'>size_t</a>) <a href='../Y/ps.html' title='Multiple used in 12 places.'>ps</a>-&gt;<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a>] = '\0';
<a id='L279' name='L279'></a> 279     <em class='brace'>}</em>
<a id='L280' name='L280'></a> 280 <em class='brace'>}</em>
<a id='L281' name='L281'></a> 281 
<a id='L282' name='L282'></a> 282 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L283' name='L283'></a> 283 <em class='comment'>/*** public functions ****************************************************************************/</em>
<a id='L284' name='L284'></a> 284 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L285' name='L285'></a> 285 
<a id='L286' name='L286'></a> 286 <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *
<a id='L287' name='L287'></a> 287 <a href='../R/get_owner.html' title='Multiple referred from 8 places.'>get_owner</a> (<a href='../Y/uid_t.html' title='Multiple used in 48 places.'>uid_t</a> <a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a>)
     <em class='comment'>/* <a href='#L241'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L315'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+287 lib/utilunix.c'  /> */</em>
<a id='L288' name='L288'></a> 288 <em class='brace'>{</em>
<a id='L289' name='L289'></a> 289     <strong class='reserved'>struct</strong> <a href='../Y/passwd.html' title='Multiple used in 88 places.'>passwd</a> *<a href='../Y/pwd.html' title='Multiple used in 109 places.'>pwd</a>;
<a id='L290' name='L290'></a> 290     <strong class='reserved'>char</strong> *<a href='../Y/name.html' title='Multiple used in 736 places.'>name</a>;
<a id='L291' name='L291'></a> 291     <strong class='reserved'>static</strong> <a href='../Y/uid_t.html' title='Multiple used in 48 places.'>uid_t</a> <a href='../Y/uid_last.html' title='Multiple used in 2 places.'>uid_last</a>;
<a id='L292' name='L292'></a> 292 
<a id='L293' name='L293'></a> 293     <a href='../Y/name.html' title='Multiple used in 736 places.'>name</a> = <a href='../S/lib--utilunix.c.html#L128' title='Defined at 128 in lib/utilunix.c.'>i_cache_match</a> ((<strong class='reserved'>int</strong>) <a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a>, <a href='../S/src--vfs--smbfs--helpers--include--smb.h.html#L536' title='Defined at 536 in src/vfs/smbfs/helpers/include/smb.h.'>uid_cache</a>, <a href='../D/UID_CACHE_SIZE.html' title='Multiple defined in 2 places.'>UID_CACHE_SIZE</a>);
<a id='L294' name='L294'></a> 294     <strong class='reserved'>if</strong> (<a href='../Y/name.html' title='Multiple used in 736 places.'>name</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L295' name='L295'></a> 295         <strong class='reserved'>return</strong> <a href='../Y/name.html' title='Multiple used in 736 places.'>name</a>;
<a id='L296' name='L296'></a> 296 
<a id='L297' name='L297'></a> 297     <a href='../Y/pwd.html' title='Multiple used in 109 places.'>pwd</a> = <a href='../Y/getpwuid.html' title='Multiple used in 9 places.'>getpwuid</a> (<a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a>);
<a id='L298' name='L298'></a> 298     <strong class='reserved'>if</strong> (<a href='../Y/pwd.html' title='Multiple used in 109 places.'>pwd</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L299' name='L299'></a> 299     <em class='brace'>{</em>
<a id='L300' name='L300'></a> 300         <a href='../S/lib--utilunix.c.html#L141' title='Defined at 141 in lib/utilunix.c.'>i_cache_add</a> ((<strong class='reserved'>int</strong>) <a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a>, <a href='../S/src--vfs--smbfs--helpers--include--smb.h.html#L536' title='Defined at 536 in src/vfs/smbfs/helpers/include/smb.h.'>uid_cache</a>, <a href='../D/UID_CACHE_SIZE.html' title='Multiple defined in 2 places.'>UID_CACHE_SIZE</a>, <a href='../Y/pwd.html' title='Multiple used in 109 places.'>pwd</a>-&gt;<a href='../Y/pw_name.html' title='Multiple used in 12 places.'>pw_name</a>, (<strong class='reserved'>int</strong> *) &amp;<a href='../Y/uid_last.html' title='Multiple used in 2 places.'>uid_last</a>);
<a id='L301' name='L301'></a> 301         <strong class='reserved'>return</strong> <a href='../Y/pwd.html' title='Multiple used in 109 places.'>pwd</a>-&gt;<a href='../Y/pw_name.html' title='Multiple used in 12 places.'>pw_name</a>;
<a id='L302' name='L302'></a> 302     <em class='brace'>}</em>
<a id='L303' name='L303'></a> 303     <strong class='reserved'>else</strong>
<a id='L304' name='L304'></a> 304     <em class='brace'>{</em>
<a id='L305' name='L305'></a> 305         <strong class='reserved'>static</strong> <strong class='reserved'>char</strong> <a href='../Y/ibuf.html' title='Multiple used in 5 places.'>ibuf</a>[10];
<a id='L306' name='L306'></a> 306 
<a id='L307' name='L307'></a> 307         <a href='../Y/g_snprintf.html' title='Multiple used in 106 places.'>g_snprintf</a> (<a href='../Y/ibuf.html' title='Multiple used in 5 places.'>ibuf</a>, <strong class='reserved'>sizeof</strong> (<a href='../Y/ibuf.html' title='Multiple used in 5 places.'>ibuf</a>), "%d", (<strong class='reserved'>int</strong>) <a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a>);
<a id='L308' name='L308'></a> 308         <strong class='reserved'>return</strong> <a href='../Y/ibuf.html' title='Multiple used in 5 places.'>ibuf</a>;
<a id='L309' name='L309'></a> 309     <em class='brace'>}</em>
<a id='L310' name='L310'></a> 310 <em class='brace'>}</em>
<a id='L311' name='L311'></a> 311 
<a id='L312' name='L312'></a> 312 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L313' name='L313'></a> 313 
<a id='L314' name='L314'></a> 314 <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *
<a id='L315' name='L315'></a> 315 <a href='../R/get_group.html' title='Multiple referred from 8 places.'>get_group</a> (<a href='../Y/gid_t.html' title='Multiple used in 47 places.'>gid_t</a> <a href='../Y/gid.html' title='Multiple used in 29 places.'>gid</a>)
     <em class='comment'>/* <a href='#L287'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L346'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+315 lib/utilunix.c'  /> */</em>
<a id='L316' name='L316'></a> 316 <em class='brace'>{</em>
<a id='L317' name='L317'></a> 317     <strong class='reserved'>struct</strong> <a href='../Y/group.html' title='Multiple used in 153 places.'>group</a> *<a href='../Y/grp.html' title='Multiple used in 48 places.'>grp</a>;
<a id='L318' name='L318'></a> 318     <strong class='reserved'>char</strong> *<a href='../Y/name.html' title='Multiple used in 736 places.'>name</a>;
<a id='L319' name='L319'></a> 319     <strong class='reserved'>static</strong> <a href='../Y/gid_t.html' title='Multiple used in 47 places.'>gid_t</a> <a href='../Y/gid_last.html' title='Multiple used in 2 places.'>gid_last</a>;
<a id='L320' name='L320'></a> 320 
<a id='L321' name='L321'></a> 321     <a href='../Y/name.html' title='Multiple used in 736 places.'>name</a> = <a href='../S/lib--utilunix.c.html#L128' title='Defined at 128 in lib/utilunix.c.'>i_cache_match</a> ((<strong class='reserved'>int</strong>) <a href='../Y/gid.html' title='Multiple used in 29 places.'>gid</a>, <a href='../Y/gid_cache.html' title='Multiple used in 3 places.'>gid_cache</a>, <a href='../S/lib--utilunix.c.html#L87' title='Defined at 87 in lib/utilunix.c.'>GID_CACHE_SIZE</a>);
<a id='L322' name='L322'></a> 322     <strong class='reserved'>if</strong> (<a href='../Y/name.html' title='Multiple used in 736 places.'>name</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L323' name='L323'></a> 323         <strong class='reserved'>return</strong> <a href='../Y/name.html' title='Multiple used in 736 places.'>name</a>;
<a id='L324' name='L324'></a> 324 
<a id='L325' name='L325'></a> 325     <a href='../Y/grp.html' title='Multiple used in 48 places.'>grp</a> = <a href='../Y/getgrgid.html' title='Multiple used in 4 places.'>getgrgid</a> (<a href='../Y/gid.html' title='Multiple used in 29 places.'>gid</a>);
<a id='L326' name='L326'></a> 326     <strong class='reserved'>if</strong> (<a href='../Y/grp.html' title='Multiple used in 48 places.'>grp</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L327' name='L327'></a> 327     <em class='brace'>{</em>
<a id='L328' name='L328'></a> 328         <a href='../S/lib--utilunix.c.html#L141' title='Defined at 141 in lib/utilunix.c.'>i_cache_add</a> ((<strong class='reserved'>int</strong>) <a href='../Y/gid.html' title='Multiple used in 29 places.'>gid</a>, <a href='../Y/gid_cache.html' title='Multiple used in 3 places.'>gid_cache</a>, <a href='../S/lib--utilunix.c.html#L87' title='Defined at 87 in lib/utilunix.c.'>GID_CACHE_SIZE</a>, <a href='../Y/grp.html' title='Multiple used in 48 places.'>grp</a>-&gt;<a href='../Y/gr_name.html' title='Multiple used in 7 places.'>gr_name</a>, (<strong class='reserved'>int</strong> *) &amp;<a href='../Y/gid_last.html' title='Multiple used in 2 places.'>gid_last</a>);
<a id='L329' name='L329'></a> 329         <strong class='reserved'>return</strong> <a href='../Y/grp.html' title='Multiple used in 48 places.'>grp</a>-&gt;<a href='../Y/gr_name.html' title='Multiple used in 7 places.'>gr_name</a>;
<a id='L330' name='L330'></a> 330     <em class='brace'>}</em>
<a id='L331' name='L331'></a> 331     <strong class='reserved'>else</strong>
<a id='L332' name='L332'></a> 332     <em class='brace'>{</em>
<a id='L333' name='L333'></a> 333         <strong class='reserved'>static</strong> <strong class='reserved'>char</strong> <a href='../Y/gbuf.html' title='Multiple used in 9 places.'>gbuf</a>[10];
<a id='L334' name='L334'></a> 334 
<a id='L335' name='L335'></a> 335         <a href='../Y/g_snprintf.html' title='Multiple used in 106 places.'>g_snprintf</a> (<a href='../Y/gbuf.html' title='Multiple used in 9 places.'>gbuf</a>, <strong class='reserved'>sizeof</strong> (<a href='../Y/gbuf.html' title='Multiple used in 9 places.'>gbuf</a>), "%d", (<strong class='reserved'>int</strong>) <a href='../Y/gid.html' title='Multiple used in 29 places.'>gid</a>);
<a id='L336' name='L336'></a> 336         <strong class='reserved'>return</strong> <a href='../Y/gbuf.html' title='Multiple used in 9 places.'>gbuf</a>;
<a id='L337' name='L337'></a> 337     <em class='brace'>}</em>
<a id='L338' name='L338'></a> 338 <em class='brace'>}</em>
<a id='L339' name='L339'></a> 339 
<a id='L340' name='L340'></a> 340 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L341' name='L341'></a> 341 <em class='comment'>/* Since ncurses uses a handler that automatically refreshes the */</em>
<a id='L342' name='L342'></a> 342 <em class='comment'>/* screen after a SIGCONT, and we don't want this behavior when */</em>
<a id='L343' name='L343'></a> 343 <em class='comment'>/* spawning a child, we save the original handler here */</em>
<a id='L344' name='L344'></a> 344 
<a id='L345' name='L345'></a> 345 <strong class='reserved'>void</strong>
<a id='L346' name='L346'></a> 346 <a href='../R/save_stop_handler.html' title='Multiple referred from 2 places.'>save_stop_handler</a> (<strong class='reserved'>void</strong>)
     <em class='comment'>/* <a href='#L315'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L362'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+346 lib/utilunix.c'  /> */</em>
<a id='L347' name='L347'></a> 347 <em class='brace'>{</em>
<a id='L348' name='L348'></a> 348     <a href='../S/tests--lib--utilunix__my_system-common.c.html#L64' title='Defined at 64 in tests/lib/utilunix__my_system-common.c.'>sigaction</a> (<a href='../Y/SIGTSTP.html' title='Multiple used in 12 places.'>SIGTSTP</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, &amp;<a href='../Y/startup_handler.html' title='Multiple used in 6 places.'>startup_handler</a>);
<a id='L349' name='L349'></a> 349 <em class='brace'>}</em>
<a id='L350' name='L350'></a> 350 
<a id='L351' name='L351'></a> 351 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L352' name='L352'></a> 352 <em class='comment'>/**</em>
<a id='L353' name='L353'></a> 353 <em class='comment'> * Wrapper for _exit() system call.</em>
<a id='L354' name='L354'></a> 354 <em class='comment'> * The _exit() function has gcc's attribute 'noreturn', and this is reason why we can't</em>
<a id='L355' name='L355'></a> 355 <em class='comment'> * mock the call.</em>
<a id='L356' name='L356'></a> 356 <em class='comment'> *</em>
<a id='L357' name='L357'></a> 357 <em class='comment'> * @param status exit code</em>
<a id='L358' name='L358'></a> 358 <em class='comment'> */</em>
<a id='L359' name='L359'></a> 359 
<a id='L360' name='L360'></a> 360 <strong class='reserved'>void</strong>
<a id='L361' name='L361'></a> 361 <em class='comment'>/* __attribute__ ((noreturn)) */</em>
<a id='L362' name='L362'></a> 362 <a href='../R/my_exit.html' title='Multiple referred from 8 places.'>my_exit</a> (<strong class='reserved'>int</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>)
     <em class='comment'>/* <a href='#L346'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L380'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+362 lib/utilunix.c'  /> */</em>
<a id='L363' name='L363'></a> 363 <em class='brace'>{</em>
<a id='L364' name='L364'></a> 364     _exit (<a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>);
<a id='L365' name='L365'></a> 365 <em class='brace'>}</em>
<a id='L366' name='L366'></a> 366 
<a id='L367' name='L367'></a> 367 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L368' name='L368'></a> 368 <em class='comment'>/**</em>
<a id='L369' name='L369'></a> 369 <em class='comment'> * Call external programs.</em>
<a id='L370' name='L370'></a> 370 <em class='comment'> *</em>
<a id='L371' name='L371'></a> 371 <em class='comment'> * @parameter flags   addition conditions for running external programs.</em>
<a id='L372' name='L372'></a> 372 <em class='comment'> * @parameter shell   shell (if flags contain EXECUTE_AS_SHELL), command to run otherwise.</em>
<a id='L373' name='L373'></a> 373 <em class='comment'> *                    Shell (or command) will be found in paths described in PATH variable</em>
<a id='L374' name='L374'></a> 374 <em class='comment'> *                    (if shell parameter doesn't begin from path delimiter)</em>
<a id='L375' name='L375'></a> 375 <em class='comment'> * @parameter command Command for shell (or first parameter for command, if flags contain EXECUTE_AS_SHELL)</em>
<a id='L376' name='L376'></a> 376 <em class='comment'> * @return 0 if successfull, -1 otherwise</em>
<a id='L377' name='L377'></a> 377 <em class='comment'> */</em>
<a id='L378' name='L378'></a> 378 
<a id='L379' name='L379'></a> 379 <strong class='reserved'>int</strong>
<a id='L380' name='L380'></a> 380 <a href='../R/my_system.html' title='Multiple referred from 8 places.'>my_system</a> (<strong class='reserved'>int</strong> <a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a>, <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>, <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/command.html' title='Multiple used in 270 places.'>command</a>)
     <em class='comment'>/* <a href='#L362'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L400'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+380 lib/utilunix.c'  /> */</em>
<a id='L381' name='L381'></a> 381 <em class='brace'>{</em>
<a id='L382' name='L382'></a> 382     <strong class='reserved'>return</strong> <a href='../S/lib--utilunix.c.html#L400' title='Defined at 400 in lib/utilunix.c.'>my_systeml</a> (<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a>, <a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>, <a href='../Y/command.html' title='Multiple used in 270 places.'>command</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L383' name='L383'></a> 383 <em class='brace'>}</em>
<a id='L384' name='L384'></a> 384 
<a id='L385' name='L385'></a> 385 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L386' name='L386'></a> 386 <em class='comment'>/**</em>
<a id='L387' name='L387'></a> 387 <em class='comment'> * Call external programs with various parameters number.</em>
<a id='L388' name='L388'></a> 388 <em class='comment'> *</em>
<a id='L389' name='L389'></a> 389 <em class='comment'> * @parameter flags addition conditions for running external programs.</em>
<a id='L390' name='L390'></a> 390 <em class='comment'> * @parameter shell shell (if flags contain EXECUTE_AS_SHELL), command to run otherwise.</em>
<a id='L391' name='L391'></a> 391 <em class='comment'> *                  Shell (or command) will be found in pathes described in PATH variable</em>
<a id='L392' name='L392'></a> 392 <em class='comment'> *                  (if shell parameter doesn't begin from path delimiter)</em>
<a id='L393' name='L393'></a> 393 <em class='comment'> * @parameter ...   Command for shell with addition parameters for shell</em>
<a id='L394' name='L394'></a> 394 <em class='comment'> *                  (or parameters for command, if flags contain EXECUTE_AS_SHELL).</em>
<a id='L395' name='L395'></a> 395 <em class='comment'> *                  Should be NULL terminated.</em>
<a id='L396' name='L396'></a> 396 <em class='comment'> * @return 0 if successfull, -1 otherwise</em>
<a id='L397' name='L397'></a> 397 <em class='comment'> */</em>
<a id='L398' name='L398'></a> 398 
<a id='L399' name='L399'></a> 399 <strong class='reserved'>int</strong>
<a id='L400' name='L400'></a> 400 <a href='../R/my_systeml.html' title='Multiple referred from 2 places.'>my_systeml</a> (<strong class='reserved'>int</strong> <a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a>, <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>, ...)
     <em class='comment'>/* <a href='#L380'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L433'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+400 lib/utilunix.c'  /> */</em>
<a id='L401' name='L401'></a> 401 <em class='brace'>{</em>
<a id='L402' name='L402'></a> 402     <a href='../Y/GPtrArray.html' title='Multiple used in 61 places.'>GPtrArray</a> *<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>;
<a id='L403' name='L403'></a> 403     <strong class='reserved'>int</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a> = 0;
<a id='L404' name='L404'></a> 404     <a href='../Y/va_list.html' title='Multiple used in 43 places.'>va_list</a> <a href='../Y/vargs.html' title='Multiple used in 4 places.'>vargs</a>;
<a id='L405' name='L405'></a> 405     <strong class='reserved'>char</strong> *<a href='../Y/one_arg.html' title='Multiple used in 6 places.'>one_arg</a>;
<a id='L406' name='L406'></a> 406 
<a id='L407' name='L407'></a> 407     <a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a> = <a href='../Y/g_ptr_array_new.html' title='Multiple used in 29 places.'>g_ptr_array_new</a> ();
<a id='L408' name='L408'></a> 408 
<a id='L409' name='L409'></a> 409     <a href='../Y/va_start.html' title='Multiple used in 41 places.'>va_start</a> (<a href='../Y/vargs.html' title='Multiple used in 4 places.'>vargs</a>, <a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>);
<a id='L410' name='L410'></a> 410     <strong class='reserved'>while</strong> ((<a href='../Y/one_arg.html' title='Multiple used in 6 places.'>one_arg</a> = <a href='../Y/va_arg.html' title='Multiple used in 17 places.'>va_arg</a> (<a href='../Y/vargs.html' title='Multiple used in 4 places.'>vargs</a>, <strong class='reserved'>char</strong> *)) != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L411' name='L411'></a> 411           <a href='../Y/g_ptr_array_add.html' title='Multiple used in 52 places.'>g_ptr_array_add</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, <a href='../Y/one_arg.html' title='Multiple used in 6 places.'>one_arg</a>);
<a id='L412' name='L412'></a> 412     <a href='../Y/va_end.html' title='Multiple used in 38 places.'>va_end</a> (<a href='../Y/vargs.html' title='Multiple used in 4 places.'>vargs</a>);
<a id='L413' name='L413'></a> 413 
<a id='L414' name='L414'></a> 414     <a href='../Y/g_ptr_array_add.html' title='Multiple used in 52 places.'>g_ptr_array_add</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L415' name='L415'></a> 415     <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a> = <a href='../S/lib--utilunix.c.html#L481' title='Defined at 481 in lib/utilunix.c.'>my_systemv_flags</a> (<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a>, <a href='../Y/shell.html' title='Multiple used in 50 places.'>shell</a>, (<strong class='reserved'>char</strong> *<strong class='reserved'>const</strong> *) <a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>-&gt;<a href='../Y/pdata.html' title='Multiple used in 3 places.'>pdata</a>);
<a id='L416' name='L416'></a> 416 
<a id='L417' name='L417'></a> 417     <a href='../Y/g_ptr_array_free.html' title='Multiple used in 32 places.'>g_ptr_array_free</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>);
<a id='L418' name='L418'></a> 418 
<a id='L419' name='L419'></a> 419     <strong class='reserved'>return</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>;
<a id='L420' name='L420'></a> 420 <em class='brace'>}</em>
<a id='L421' name='L421'></a> 421 
<a id='L422' name='L422'></a> 422 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L423' name='L423'></a> 423 <em class='comment'>/**</em>
<a id='L424' name='L424'></a> 424 <em class='comment'> * Call external programs with array of strings as parameters.</em>
<a id='L425' name='L425'></a> 425 <em class='comment'> *</em>
<a id='L426' name='L426'></a> 426 <em class='comment'> * @parameter command command to run. Command will be found in paths described in PATH variable</em>
<a id='L427' name='L427'></a> 427 <em class='comment'> *                    (if command parameter doesn't begin from path delimiter)</em>
<a id='L428' name='L428'></a> 428 <em class='comment'> * @parameter argv    Array of strings (NULL-terminated) with parameters for command</em>
<a id='L429' name='L429'></a> 429 <em class='comment'> * @return 0 if successfull, -1 otherwise</em>
<a id='L430' name='L430'></a> 430 <em class='comment'> */</em>
<a id='L431' name='L431'></a> 431 
<a id='L432' name='L432'></a> 432 <strong class='reserved'>int</strong>
<a id='L433' name='L433'></a> 433 <a href='../R/my_systemv.html' title='Multiple referred from 2 places.'>my_systemv</a> (<strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/command.html' title='Multiple used in 270 places.'>command</a>, <strong class='reserved'>char</strong> *<strong class='reserved'>const</strong> <a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a>[])
     <em class='comment'>/* <a href='#L400'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L481'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+433 lib/utilunix.c'  /> */</em>
<a id='L434' name='L434'></a> 434 <em class='brace'>{</em>
<a id='L435' name='L435'></a> 435     <a href='../S/lib--utilunix.c.html#L106' title='Defined at 106 in lib/utilunix.c.'>my_fork_state_t</a> <a href='../Y/fork_state.html' title='Multiple used in 3 places.'>fork_state</a>;
<a id='L436' name='L436'></a> 436     <strong class='reserved'>int</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a> = 0;
<a id='L437' name='L437'></a> 437     <a href='../S/lib--utilunix.c.html#L113' title='Defined at 113 in lib/utilunix.c.'>my_system_sigactions_t</a> <a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>;
<a id='L438' name='L438'></a> 438 
<a id='L439' name='L439'></a> 439     <a href='../S/lib--utilunix.c.html#L182' title='Defined at 182 in lib/utilunix.c.'>my_system__save_sigaction_handlers</a> (&amp;<a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>);
<a id='L440' name='L440'></a> 440 
<a id='L441' name='L441'></a> 441     <a href='../Y/fork_state.html' title='Multiple used in 3 places.'>fork_state</a> = <a href='../S/lib--utilunix.c.html#L152' title='Defined at 152 in lib/utilunix.c.'>my_fork</a> ();
<a id='L442' name='L442'></a> 442     <strong class='reserved'>switch</strong> (<a href='../Y/fork_state.html' title='Multiple used in 3 places.'>fork_state</a>)
<a id='L443' name='L443'></a> 443     <em class='brace'>{</em>
<a id='L444' name='L444'></a> 444     <strong class='reserved'>case</strong> <a href='../S/lib--utilunix.c.html#L103' title='Defined at 103 in lib/utilunix.c.'>FORK_ERROR</a>:
<a id='L445' name='L445'></a> 445         <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a> = -1;
<a id='L446' name='L446'></a> 446         <strong class='reserved'>break</strong>;
<a id='L447' name='L447'></a> 447     <strong class='reserved'>case</strong> <a href='../S/lib--utilunix.c.html#L104' title='Defined at 104 in lib/utilunix.c.'>FORK_CHILD</a>:
<a id='L448' name='L448'></a> 448         <em class='brace'>{</em>
<a id='L449' name='L449'></a> 449             <a href='../S/tests--lib--utilunix__my_system-common.c.html#L135' title='Defined at 135 in tests/lib/utilunix__my_system-common.c.'>signal</a> (<a href='../Y/SIGINT.html' title='Multiple used in 9 places.'>SIGINT</a>, <a href='../Y/SIG_DFL.html' title='Multiple used in 9 places.'>SIG_DFL</a>);
<a id='L450' name='L450'></a> 450             <a href='../S/tests--lib--utilunix__my_system-common.c.html#L135' title='Defined at 135 in tests/lib/utilunix__my_system-common.c.'>signal</a> (<a href='../Y/SIGQUIT.html' title='Multiple used in 6 places.'>SIGQUIT</a>, <a href='../Y/SIG_DFL.html' title='Multiple used in 9 places.'>SIG_DFL</a>);
<a id='L451' name='L451'></a> 451             <a href='../S/tests--lib--utilunix__my_system-common.c.html#L135' title='Defined at 135 in tests/lib/utilunix__my_system-common.c.'>signal</a> (<a href='../Y/SIGTSTP.html' title='Multiple used in 12 places.'>SIGTSTP</a>, <a href='../Y/SIG_DFL.html' title='Multiple used in 9 places.'>SIG_DFL</a>);
<a id='L452' name='L452'></a> 452             <a href='../S/tests--lib--utilunix__my_system-common.c.html#L135' title='Defined at 135 in tests/lib/utilunix__my_system-common.c.'>signal</a> (<a href='../Y/SIGCHLD.html' title='Multiple used in 7 places.'>SIGCHLD</a>, <a href='../Y/SIG_DFL.html' title='Multiple used in 9 places.'>SIG_DFL</a>);
<a id='L453' name='L453'></a> 453 
<a id='L454' name='L454'></a> 454             <a href='../S/tests--lib--utilunix__my_system-common.c.html#L211' title='Defined at 211 in tests/lib/utilunix__my_system-common.c.'>execvp</a> (<a href='../Y/command.html' title='Multiple used in 270 places.'>command</a>, <a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a>);
<a id='L455' name='L455'></a> 455             <a href='../D/my_exit.html' title='Multiple defined in 2 places.'>my_exit</a> (127);      <em class='comment'>/* Exec error */</em>
<a id='L456' name='L456'></a> 456         <em class='brace'>}</em>
<a id='L457' name='L457'></a> 457         <a href='../D/MC_FALLTHROUGH.html' title='Multiple defined in 2 places.'>MC_FALLTHROUGH</a>;
<a id='L458' name='L458'></a> 458         <em class='comment'>/* no break here, or unreachable-code warning by no returning my_exit() */</em>
<a id='L459' name='L459'></a> 459     <strong class='reserved'>default</strong>:
<a id='L460' name='L460'></a> 460         <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a> = 0;
<a id='L461' name='L461'></a> 461         <strong class='reserved'>break</strong>;
<a id='L462' name='L462'></a> 462     <em class='brace'>}</em>
<a id='L463' name='L463'></a> 463     <a href='../S/lib--utilunix.c.html#L201' title='Defined at 201 in lib/utilunix.c.'>my_system__restore_sigaction_handlers</a> (&amp;<a href='../Y/sigactions.html' title='Multiple used in 11 places.'>sigactions</a>);
<a id='L464' name='L464'></a> 464 
<a id='L465' name='L465'></a> 465     <strong class='reserved'>return</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>;
<a id='L466' name='L466'></a> 466 <em class='brace'>}</em>
<a id='L467' name='L467'></a> 467 
<a id='L468' name='L468'></a> 468 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L469' name='L469'></a> 469 <em class='comment'>/**</em>
<a id='L470' name='L470'></a> 470 <em class='comment'> * Call external programs with flags and with array of strings as parameters.</em>
<a id='L471' name='L471'></a> 471 <em class='comment'> *</em>
<a id='L472' name='L472'></a> 472 <em class='comment'> * @parameter flags   addition conditions for running external programs.</em>
<a id='L473' name='L473'></a> 473 <em class='comment'> * @parameter command shell (if flags contain EXECUTE_AS_SHELL), command to run otherwise.</em>
<a id='L474' name='L474'></a> 474 <em class='comment'> *                    Shell (or command) will be found in paths described in PATH variable</em>
<a id='L475' name='L475'></a> 475 <em class='comment'> *                    (if shell parameter doesn't begin from path delimiter)</em>
<a id='L476' name='L476'></a> 476 <em class='comment'> * @parameter argv    Array of strings (NULL-terminated) with parameters for command</em>
<a id='L477' name='L477'></a> 477 <em class='comment'> * @return 0 if successfull, -1 otherwise</em>
<a id='L478' name='L478'></a> 478 <em class='comment'> */</em>
<a id='L479' name='L479'></a> 479 
<a id='L480' name='L480'></a> 480 <strong class='reserved'>int</strong>
<a id='L481' name='L481'></a> 481 <a href='../R/my_systemv_flags.html' title='Multiple referred from 3 places.'>my_systemv_flags</a> (<strong class='reserved'>int</strong> <a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a>, <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/command.html' title='Multiple used in 270 places.'>command</a>, <strong class='reserved'>char</strong> *<strong class='reserved'>const</strong> <a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a>[])
     <em class='comment'>/* <a href='#L433'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L512'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+481 lib/utilunix.c'  /> */</em>
<a id='L482' name='L482'></a> 482 <em class='brace'>{</em>
<a id='L483' name='L483'></a> 483     <strong class='reserved'>char</strong> *<a href='../Y/execute_name.html' title='Multiple used in 8 places.'>execute_name</a> = <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L484' name='L484'></a> 484     <a href='../Y/GPtrArray.html' title='Multiple used in 61 places.'>GPtrArray</a> *<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>;
<a id='L485' name='L485'></a> 485     <strong class='reserved'>int</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a> = 0;
<a id='L486' name='L486'></a> 486 
<a id='L487' name='L487'></a> 487     <a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a> = <a href='../S/lib--utilunix.c.html#L211' title='Defined at 211 in lib/utilunix.c.'>my_system_make_arg_array</a> (<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a>, <a href='../Y/command.html' title='Multiple used in 270 places.'>command</a>, &amp;<a href='../Y/execute_name.html' title='Multiple used in 8 places.'>execute_name</a>);
<a id='L488' name='L488'></a> 488 
<a id='L489' name='L489'></a> 489     <strong class='reserved'>for</strong> (; <a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a> &amp;&amp; *<a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>; <a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a>++)
<a id='L490' name='L490'></a> 490         <a href='../Y/g_ptr_array_add.html' title='Multiple used in 52 places.'>g_ptr_array_add</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, *<a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a>);
<a id='L491' name='L491'></a> 491 
<a id='L492' name='L492'></a> 492     <a href='../Y/g_ptr_array_add.html' title='Multiple used in 52 places.'>g_ptr_array_add</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L493' name='L493'></a> 493     <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a> = <a href='../S/lib--utilunix.c.html#L433' title='Defined at 433 in lib/utilunix.c.'>my_systemv</a> (<a href='../Y/execute_name.html' title='Multiple used in 8 places.'>execute_name</a>, (<strong class='reserved'>char</strong> *<strong class='reserved'>const</strong> *) <a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>-&gt;<a href='../Y/pdata.html' title='Multiple used in 3 places.'>pdata</a>);
<a id='L494' name='L494'></a> 494 
<a id='L495' name='L495'></a> 495     <a href='../Y/g_free.html' title='Multiple used in 1230 places.'>g_free</a> (<a href='../Y/execute_name.html' title='Multiple used in 8 places.'>execute_name</a>);
<a id='L496' name='L496'></a> 496     <a href='../Y/g_ptr_array_free.html' title='Multiple used in 32 places.'>g_ptr_array_free</a> (<a href='../Y/args_array.html' title='Multiple used in 24 places.'>args_array</a>, <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>);
<a id='L497' name='L497'></a> 497 
<a id='L498' name='L498'></a> 498     <strong class='reserved'>return</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>;
<a id='L499' name='L499'></a> 499 <em class='brace'>}</em>
<a id='L500' name='L500'></a> 500 
<a id='L501' name='L501'></a> 501 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L502' name='L502'></a> 502 <em class='comment'>/**</em>
<a id='L503' name='L503'></a> 503 <em class='comment'> * Create pipe and run child process.</em>
<a id='L504' name='L504'></a> 504 <em class='comment'> *</em>
<a id='L505' name='L505'></a> 505 <em class='comment'> * @parameter command command line of child process</em>
<a id='L506' name='L506'></a> 506 <em class='comment'> * @paremeter error contains pointer to object to handle error code and message</em>
<a id='L507' name='L507'></a> 507 <em class='comment'> *</em>
<a id='L508' name='L508'></a> 508 <em class='comment'> * @return newly created object of mc_pipe_t class in success, NULL otherwise</em>
<a id='L509' name='L509'></a> 509 <em class='comment'> */</em>
<a id='L510' name='L510'></a> 510 
<a id='L511' name='L511'></a> 511 <a href='../S/lib--util.h.html#L112' title='Defined at 112 in lib/util.h.'>mc_pipe_t</a> *
<a id='L512' name='L512'></a> 512 <a href='../R/mc_popen.html' title='Multiple referred from 3 places.'>mc_popen</a> (<strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/command.html' title='Multiple used in 270 places.'>command</a>, <a href='../Y/GError.html' title='Multiple used in 175 places.'>GError</a> ** <a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>)
     <em class='comment'>/* <a href='#L481'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L570'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+512 lib/utilunix.c'  /> */</em>
<a id='L513' name='L513'></a> 513 <em class='brace'>{</em>
<a id='L514' name='L514'></a> 514     <a href='../S/lib--util.h.html#L112' title='Defined at 112 in lib/util.h.'>mc_pipe_t</a> *<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>;
<a id='L515' name='L515'></a> 515     <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<strong class='reserved'>const</strong> <a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a>[] = <em class='brace'>{</em> "/bin/sh", "sh", "-c", <a href='../Y/command.html' title='Multiple used in 270 places.'>command</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a> <em class='brace'>}</em>;
<a id='L516' name='L516'></a> 516 
<a id='L517' name='L517'></a> 517     <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/g_try_new.html' title='Multiple used in 7 places.'>g_try_new</a> (<a href='../S/lib--util.h.html#L112' title='Defined at 112 in lib/util.h.'>mc_pipe_t</a>, 1);
<a id='L518' name='L518'></a> 518     <strong class='reserved'>if</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L519' name='L519'></a> 519     <em class='brace'>{</em>
<a id='L520' name='L520'></a> 520         <a href='../S/lib--util.c.html#L1492' title='Defined at 1492 in lib/util.c.'>mc_replace_error</a> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>, <a href='../S/lib--util.h.html#L36' title='Defined at 36 in lib/util.h.'>MC_PIPE_ERROR_CREATE_PIPE</a>, "%s",
<a id='L521' name='L521'></a> 521                           <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Cannot create pipe descriptor"));
<a id='L522' name='L522'></a> 522         <strong class='reserved'>goto</strong> <a href='../Y/ret_err.html' title='Multiple used in 3 places.'>ret_err</a>;
<a id='L523' name='L523'></a> 523     <em class='brace'>}</em>
<a id='L524' name='L524'></a> 524 
<a id='L525' name='L525'></a> 525     <strong class='reserved'>if</strong> (!g_spawn_async_with_pipes
<a id='L526' name='L526'></a> 526         (<a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, (<a href='../Y/gchar.html' title='Multiple used in 338 places.'>gchar</a> **) <a href='../Y/argv.html' title='Multiple used in 74 places.'>argv</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_FILE_AND_ARGV_ZERO,
<a id='L527' name='L527'></a> 527          <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, &amp;<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/child_pid.html' title='Multiple used in 3 places.'>child_pid</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, &amp;<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>, &amp;<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>, <a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>))
<a id='L528' name='L528'></a> 528     <em class='brace'>{</em>
<a id='L529' name='L529'></a> 529         <a href='../S/lib--util.c.html#L1492' title='Defined at 1492 in lib/util.c.'>mc_replace_error</a> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>, <a href='../S/lib--util.h.html#L38' title='Defined at 38 in lib/util.h.'>MC_PIPE_ERROR_CREATE_PIPE_STREAM</a>, "%s",
<a id='L530' name='L530'></a> 530                           <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Cannot create pipe streams"));
<a id='L531' name='L531'></a> 531         <strong class='reserved'>goto</strong> <a href='../Y/ret_err.html' title='Multiple used in 3 places.'>ret_err</a>;
<a id='L532' name='L532'></a> 532     <em class='brace'>}</em>
<a id='L533' name='L533'></a> 533 
<a id='L534' name='L534'></a> 534     <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/buf.html' title='Multiple used in 954 places.'>buf</a>[0] = '\0';
<a id='L535' name='L535'></a> 535     <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L33' title='Defined at 33 in lib/util.h.'>MC_PIPE_BUFSIZE</a>;
<a id='L536' name='L536'></a> 536     <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/null_term.html' title='Multiple used in 9 places.'>null_term</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L537' name='L537'></a> 537 
<a id='L538' name='L538'></a> 538     <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/buf.html' title='Multiple used in 954 places.'>buf</a>[0] = '\0';
<a id='L539' name='L539'></a> 539     <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L33' title='Defined at 33 in lib/util.h.'>MC_PIPE_BUFSIZE</a>;
<a id='L540' name='L540'></a> 540     <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/null_term.html' title='Multiple used in 9 places.'>null_term</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L541' name='L541'></a> 541 
<a id='L542' name='L542'></a> 542     <strong class='reserved'>return</strong> <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>;
<a id='L543' name='L543'></a> 543 
<a id='L544' name='L544'></a> 544   <a href='../Y/ret_err.html' title='Multiple used in 3 places.'>ret_err</a>:
<a id='L545' name='L545'></a> 545     <a href='../Y/g_free.html' title='Multiple used in 1230 places.'>g_free</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>);
<a id='L546' name='L546'></a> 546     <strong class='reserved'>return</strong> <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L547' name='L547'></a> 547 <em class='brace'>}</em>
<a id='L548' name='L548'></a> 548 
<a id='L549' name='L549'></a> 549 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L550' name='L550'></a> 550 <em class='comment'>/**</em>
<a id='L551' name='L551'></a> 551 <em class='comment'> * Read stdout and stderr of pipe asynchronously.</em>
<a id='L552' name='L552'></a> 552 <em class='comment'> *</em>
<a id='L553' name='L553'></a> 553 <em class='comment'> * @parameter p pipe descriptor</em>
<a id='L554' name='L554'></a> 554 <em class='comment'> *</em>
<a id='L555' name='L555'></a> 555 <em class='comment'> * The lengths of read data contain in p-&gt;out.len and p-&gt;err.len.</em>
<a id='L556' name='L556'></a> 556 <em class='comment'> * Before read, p-&gt;xxx.len is an input:</em>
<a id='L557' name='L557'></a> 557 <em class='comment'> *   p-&gt;xxx.len &gt; 0:  do read stream p-&gt;xxx and store data in p-&gt;xxx.buf;</em>
<a id='L558' name='L558'></a> 558 <em class='comment'> *   p-&gt;xxx.len &lt;= 0: do not read stream p-&gt;xxx.</em>
<a id='L559' name='L559'></a> 559 <em class='comment'> *</em>
<a id='L560' name='L560'></a> 560 <em class='comment'> * After read, p-&gt;xxx.len is an output and contains the following:</em>
<a id='L561' name='L561'></a> 561 <em class='comment'> *   p-&gt;xxx.len &gt; 0: an actual length of read data stored in p-&gt;xxx.buf;</em>
<a id='L562' name='L562'></a> 562 <em class='comment'> *   p-&gt;xxx.len == MC_PIPE_STREAM_EOF: EOF of stream p-&gt;xxx;</em>
<a id='L563' name='L563'></a> 563 <em class='comment'> *   p-&gt;xxx.len == MC_PIPE_STREAM_UNREAD: stream p-&gt;xxx was not read;</em>
<a id='L564' name='L564'></a> 564 <em class='comment'> *   p-&gt;xxx.len == MC_PIPE_ERROR_READ: reading error, and p-&gt;xxx.errno is set appropriately.</em>
<a id='L565' name='L565'></a> 565 <em class='comment'> *</em>
<a id='L566' name='L566'></a> 566 <em class='comment'> * @paremeter error contains pointer to object to handle error code and message</em>
<a id='L567' name='L567'></a> 567 <em class='comment'> */</em>
<a id='L568' name='L568'></a> 568 
<a id='L569' name='L569'></a> 569 <strong class='reserved'>void</strong>
<a id='L570' name='L570'></a> 570 <a href='../R/mc_pread.html' title='Multiple referred from 3 places.'>mc_pread</a> (<a href='../S/lib--util.h.html#L112' title='Defined at 112 in lib/util.h.'>mc_pipe_t</a> * <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, <a href='../Y/GError.html' title='Multiple used in 175 places.'>GError</a> ** <a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>)
     <em class='comment'>/* <a href='#L512'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L634'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+570 lib/utilunix.c'  /> */</em>
<a id='L571' name='L571'></a> 571 <em class='brace'>{</em>
<a id='L572' name='L572'></a> 572     <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> <a href='../Y/read_out.html' title='Multiple used in 5 places.'>read_out</a>, <a href='../Y/read_err.html' title='Multiple used in 5 places.'>read_err</a>;
<a id='L573' name='L573'></a> 573     <a href='../Y/fd_set.html' title='Multiple used in 28 places.'>fd_set</a> <a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>;
<a id='L574' name='L574'></a> 574     <strong class='reserved'>int</strong> <a href='../Y/maxfd.html' title='Multiple used in 12 places.'>maxfd</a> = 0;
<a id='L575' name='L575'></a> 575     <strong class='reserved'>int</strong> <a href='../Y/res.html' title='Multiple used in 390 places.'>res</a>;
<a id='L576' name='L576'></a> 576 
<a id='L577' name='L577'></a> 577     <strong class='reserved'>if</strong> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L578' name='L578'></a> 578         *<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> = <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L579' name='L579'></a> 579 
<a id='L580' name='L580'></a> 580     <a href='../Y/read_out.html' title='Multiple used in 5 places.'>read_out</a> = <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a> &gt;= 0 &amp;&amp; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> &gt; 0;
<a id='L581' name='L581'></a> 581     <a href='../Y/read_err.html' title='Multiple used in 5 places.'>read_err</a> = <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a> &gt;= 0 &amp;&amp; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> &gt; 0;
<a id='L582' name='L582'></a> 582 
<a id='L583' name='L583'></a> 583     <strong class='reserved'>if</strong> (!<a href='../Y/read_out.html' title='Multiple used in 5 places.'>read_out</a> &amp;&amp; !<a href='../Y/read_err.html' title='Multiple used in 5 places.'>read_err</a>)
<a id='L584' name='L584'></a> 584     <em class='brace'>{</em>
<a id='L585' name='L585'></a> 585         <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L35' title='Defined at 35 in lib/util.h.'>MC_PIPE_STREAM_UNREAD</a>;
<a id='L586' name='L586'></a> 586         <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L35' title='Defined at 35 in lib/util.h.'>MC_PIPE_STREAM_UNREAD</a>;
<a id='L587' name='L587'></a> 587         <strong class='reserved'>return</strong>;
<a id='L588' name='L588'></a> 588     <em class='brace'>}</em>
<a id='L589' name='L589'></a> 589 
<a id='L590' name='L590'></a> 590     <a href='../Y/FD_ZERO.html' title='Multiple used in 22 places.'>FD_ZERO</a> (&amp;<a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>);
<a id='L591' name='L591'></a> 591     <strong class='reserved'>if</strong> (<a href='../Y/read_out.html' title='Multiple used in 5 places.'>read_out</a>)
<a id='L592' name='L592'></a> 592     <em class='brace'>{</em>
<a id='L593' name='L593'></a> 593         <a href='../Y/FD_SET.html' title='Multiple used in 28 places.'>FD_SET</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>, &amp;<a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>);
<a id='L594' name='L594'></a> 594         <a href='../Y/maxfd.html' title='Multiple used in 12 places.'>maxfd</a> = <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>;
<a id='L595' name='L595'></a> 595     <em class='brace'>}</em>
<a id='L596' name='L596'></a> 596 
<a id='L597' name='L597'></a> 597     <strong class='reserved'>if</strong> (<a href='../Y/read_err.html' title='Multiple used in 5 places.'>read_err</a>)
<a id='L598' name='L598'></a> 598     <em class='brace'>{</em>
<a id='L599' name='L599'></a> 599         <a href='../Y/FD_SET.html' title='Multiple used in 28 places.'>FD_SET</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>, &amp;<a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>);
<a id='L600' name='L600'></a> 600         <a href='../Y/maxfd.html' title='Multiple used in 12 places.'>maxfd</a> = <a href='../D/MAX.html' title='Multiple defined in 2 places.'>MAX</a> (<a href='../Y/maxfd.html' title='Multiple used in 12 places.'>maxfd</a>, <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>);
<a id='L601' name='L601'></a> 601     <em class='brace'>}</em>
<a id='L602' name='L602'></a> 602 
<a id='L603' name='L603'></a> 603     <em class='comment'>/* no timeout */</em>
<a id='L604' name='L604'></a> 604     <a href='../Y/res.html' title='Multiple used in 390 places.'>res</a> = <a href='../Y/select.html' title='Multiple used in 22 places.'>select</a> (<a href='../Y/maxfd.html' title='Multiple used in 12 places.'>maxfd</a> + 1, &amp;<a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L605' name='L605'></a> 605     <strong class='reserved'>if</strong> (<a href='../Y/res.html' title='Multiple used in 390 places.'>res</a> &lt; 0 &amp;&amp; <a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> != <a href='../Y/EINTR.html' title='Multiple used in 45 places.'>EINTR</a>)
<a id='L606' name='L606'></a> 606     <em class='brace'>{</em>
<a id='L607' name='L607'></a> 607         <a href='../D/mc_propagate_error.html' title='Multiple defined in 2 places.'>mc_propagate_error</a> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>, <a href='../S/lib--util.h.html#L39' title='Defined at 39 in lib/util.h.'>MC_PIPE_ERROR_READ</a>,
<a id='L608' name='L608'></a> 608                             <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>
<a id='L609' name='L609'></a> 609                             ("Unexpected error in select() reading data from a child process:\n%s"),
<a id='L610' name='L610'></a> 610                             <a href='../S/lib--util.c.html#L684' title='Defined at 684 in lib/util.c.'>unix_error_string</a> (<a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a>));
<a id='L611' name='L611'></a> 611         <strong class='reserved'>return</strong>;
<a id='L612' name='L612'></a> 612     <em class='brace'>}</em>
<a id='L613' name='L613'></a> 613 
<a id='L614' name='L614'></a> 614     <strong class='reserved'>if</strong> (<a href='../Y/read_out.html' title='Multiple used in 5 places.'>read_out</a>)
<a id='L615' name='L615'></a> 615         <a href='../S/lib--utilunix.c.html#L241' title='Defined at 241 in lib/utilunix.c.'>mc_pread_stream</a> (&amp;<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>, &amp;<a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>);
<a id='L616' name='L616'></a> 616     <strong class='reserved'>else</strong>
<a id='L617' name='L617'></a> 617         <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L35' title='Defined at 35 in lib/util.h.'>MC_PIPE_STREAM_UNREAD</a>;
<a id='L618' name='L618'></a> 618 
<a id='L619' name='L619'></a> 619     <strong class='reserved'>if</strong> (<a href='../Y/read_err.html' title='Multiple used in 5 places.'>read_err</a>)
<a id='L620' name='L620'></a> 620         <a href='../S/lib--utilunix.c.html#L241' title='Defined at 241 in lib/utilunix.c.'>mc_pread_stream</a> (&amp;<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>, &amp;<a href='../Y/fds.html' title='Multiple used in 34 places.'>fds</a>);
<a id='L621' name='L621'></a> 621     <strong class='reserved'>else</strong>
<a id='L622' name='L622'></a> 622         <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../S/lib--util.h.html#L35' title='Defined at 35 in lib/util.h.'>MC_PIPE_STREAM_UNREAD</a>;
<a id='L623' name='L623'></a> 623 <em class='brace'>}</em>
<a id='L624' name='L624'></a> 624 
<a id='L625' name='L625'></a> 625 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L626' name='L626'></a> 626 <em class='comment'>/**</em>
<a id='L627' name='L627'></a> 627 <em class='comment'> * Close pipe and destroy pipe descriptor.</em>
<a id='L628' name='L628'></a> 628 <em class='comment'> *</em>
<a id='L629' name='L629'></a> 629 <em class='comment'> * @paremeter p pipe descriptor</em>
<a id='L630' name='L630'></a> 630 <em class='comment'> * @paremeter error contains pointer to object to handle error code and message</em>
<a id='L631' name='L631'></a> 631 <em class='comment'> */</em>
<a id='L632' name='L632'></a> 632 
<a id='L633' name='L633'></a> 633 <strong class='reserved'>void</strong>
<a id='L634' name='L634'></a> 634 <a href='../R/mc_pclose.html' title='Multiple referred from 3 places.'>mc_pclose</a> (<a href='../S/lib--util.h.html#L112' title='Defined at 112 in lib/util.h.'>mc_pipe_t</a> * <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, <a href='../Y/GError.html' title='Multiple used in 175 places.'>GError</a> ** <a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>)
     <em class='comment'>/* <a href='#L570'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L669'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+634 lib/utilunix.c'  /> */</em>
<a id='L635' name='L635'></a> 635 <em class='brace'>{</em>
<a id='L636' name='L636'></a> 636     <strong class='reserved'>int</strong> <a href='../Y/res.html' title='Multiple used in 390 places.'>res</a>;
<a id='L637' name='L637'></a> 637 
<a id='L638' name='L638'></a> 638     <strong class='reserved'>if</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a> &gt;= 0)
<a id='L639' name='L639'></a> 639         <a href='../Y/res.html' title='Multiple used in 390 places.'>res</a> = <a href='../Y/close.html' title='Multiple used in 154 places.'>close</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/out.html' title='Multiple used in 200 places.'>out</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>);
<a id='L640' name='L640'></a> 640     <strong class='reserved'>if</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a> &gt;= 0)
<a id='L641' name='L641'></a> 641         <a href='../Y/res.html' title='Multiple used in 390 places.'>res</a> = <a href='../Y/close.html' title='Multiple used in 154 places.'>close</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/err.html' title='Multiple used in 82 places.'>err</a>.<a href='../Y/fd.html' title='Multiple used in 422 places.'>fd</a>);
<a id='L642' name='L642'></a> 642 
<a id='L643' name='L643'></a> 643     <strong class='reserved'>do</strong>
<a id='L644' name='L644'></a> 644     <em class='brace'>{</em>
<a id='L645' name='L645'></a> 645         <strong class='reserved'>int</strong> <a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>;
<a id='L646' name='L646'></a> 646 
<a id='L647' name='L647'></a> 647         <a href='../Y/res.html' title='Multiple used in 390 places.'>res</a> = <a href='../Y/waitpid.html' title='Multiple used in 8 places.'>waitpid</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>-&gt;<a href='../Y/child_pid.html' title='Multiple used in 3 places.'>child_pid</a>, &amp;<a href='../Y/status.html' title='Multiple used in 157 places.'>status</a>, 0);
<a id='L648' name='L648'></a> 648     <em class='brace'>}</em>
<a id='L649' name='L649'></a> 649     <strong class='reserved'>while</strong> (<a href='../Y/res.html' title='Multiple used in 390 places.'>res</a> &lt; 0 &amp;&amp; <a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> == <a href='../Y/EINTR.html' title='Multiple used in 45 places.'>EINTR</a>);
<a id='L650' name='L650'></a> 650 
<a id='L651' name='L651'></a> 651     <strong class='reserved'>if</strong> (<a href='../Y/res.html' title='Multiple used in 390 places.'>res</a> &lt; 0)
<a id='L652' name='L652'></a> 652         <a href='../S/lib--util.c.html#L1492' title='Defined at 1492 in lib/util.c.'>mc_replace_error</a> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>, <a href='../S/lib--util.h.html#L39' title='Defined at 39 in lib/util.h.'>MC_PIPE_ERROR_READ</a>, <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Unexpected error in waitpid():\n%s"),
<a id='L653' name='L653'></a> 653                           <a href='../S/lib--util.c.html#L684' title='Defined at 684 in lib/util.c.'>unix_error_string</a> (<a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a>));
<a id='L654' name='L654'></a> 654 
<a id='L655' name='L655'></a> 655     <a href='../Y/g_free.html' title='Multiple used in 1230 places.'>g_free</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>);
<a id='L656' name='L656'></a> 656 <em class='brace'>}</em>
<a id='L657' name='L657'></a> 657 
<a id='L658' name='L658'></a> 658 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L659' name='L659'></a> 659 
<a id='L660' name='L660'></a> 660 <em class='comment'>/**</em>
<a id='L661' name='L661'></a> 661 <em class='comment'> * Perform tilde expansion if possible.</em>
<a id='L662' name='L662'></a> 662 <em class='comment'> *</em>
<a id='L663' name='L663'></a> 663 <em class='comment'> * @param directory pointer to the path</em>
<a id='L664' name='L664'></a> 664 <em class='comment'> *</em>
<a id='L665' name='L665'></a> 665 <em class='comment'> * @return newly allocated string, even if it's unchanged.</em>
<a id='L666' name='L666'></a> 666 <em class='comment'> */</em>
<a id='L667' name='L667'></a> 667 
<a id='L668' name='L668'></a> 668 <strong class='reserved'>char</strong> *
<a id='L669' name='L669'></a> 669 <a href='../R/tilde_expand.html' title='Multiple referred from 13 places.'>tilde_expand</a> (<strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/directory.html' title='Multiple used in 37 places.'>directory</a>)
     <em class='comment'>/* <a href='#L634'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L716'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+669 lib/utilunix.c'  /> */</em>
<a id='L670' name='L670'></a> 670 <em class='brace'>{</em>
<a id='L671' name='L671'></a> 671     <strong class='reserved'>struct</strong> <a href='../Y/passwd.html' title='Multiple used in 88 places.'>passwd</a> *<a href='../Y/passwd.html' title='Multiple used in 88 places.'>passwd</a>;
<a id='L672' name='L672'></a> 672     <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, *<a href='../Y/q.html' title='Multiple used in 413 places.'>q</a>;
<a id='L673' name='L673'></a> 673 
<a id='L674' name='L674'></a> 674     <strong class='reserved'>if</strong> (*<a href='../Y/directory.html' title='Multiple used in 37 places.'>directory</a> != '~')
<a id='L675' name='L675'></a> 675         <strong class='reserved'>return</strong> <a href='../Y/g_strdup.html' title='Multiple used in 444 places.'>g_strdup</a> (<a href='../Y/directory.html' title='Multiple used in 37 places.'>directory</a>);
<a id='L676' name='L676'></a> 676 
<a id='L677' name='L677'></a> 677     <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/directory.html' title='Multiple used in 37 places.'>directory</a> + 1;
<a id='L678' name='L678'></a> 678 
<a id='L679' name='L679'></a> 679     <em class='comment'>/* d = "~" or d = "~/" */</em>
<a id='L680' name='L680'></a> 680     <strong class='reserved'>if</strong> (*<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> == '\0' || <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>))
<a id='L681' name='L681'></a> 681     <em class='brace'>{</em>
<a id='L682' name='L682'></a> 682         <a href='../Y/passwd.html' title='Multiple used in 88 places.'>passwd</a> = <a href='../Y/getpwuid.html' title='Multiple used in 9 places.'>getpwuid</a> (<a href='../Y/geteuid.html' title='Multiple used in 14 places.'>geteuid</a> ());
<a id='L683' name='L683'></a> 683         <a href='../Y/q.html' title='Multiple used in 413 places.'>q</a> = <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>) ? <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> + 1 : "";
<a id='L684' name='L684'></a> 684     <em class='brace'>}</em>
<a id='L685' name='L685'></a> 685     <strong class='reserved'>else</strong>
<a id='L686' name='L686'></a> 686     <em class='brace'>{</em>
<a id='L687' name='L687'></a> 687         <a href='../Y/q.html' title='Multiple used in 413 places.'>q</a> = <a href='../D/strchr.html' title='Multiple defined in 2 places.'>strchr</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, <a href='../S/lib--global.h.html#L126' title='Defined at 126 in lib/global.h.'>PATH_SEP</a>);
<a id='L688' name='L688'></a> 688         <strong class='reserved'>if</strong> (<a href='../Y/q.html' title='Multiple used in 413 places.'>q</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L689' name='L689'></a> 689             <a href='../Y/passwd.html' title='Multiple used in 88 places.'>passwd</a> = <a href='../Y/getpwnam.html' title='Multiple used in 8 places.'>getpwnam</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>);
<a id='L690' name='L690'></a> 690         <strong class='reserved'>else</strong>
<a id='L691' name='L691'></a> 691         <em class='brace'>{</em>
<a id='L692' name='L692'></a> 692             <strong class='reserved'>char</strong> *<a href='../Y/name.html' title='Multiple used in 736 places.'>name</a>;
<a id='L693' name='L693'></a> 693 
<a id='L694' name='L694'></a> 694             <a href='../Y/name.html' title='Multiple used in 736 places.'>name</a> = <a href='../Y/g_strndup.html' title='Multiple used in 66 places.'>g_strndup</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, <a href='../Y/q.html' title='Multiple used in 413 places.'>q</a> - <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>);
<a id='L695' name='L695'></a> 695             <a href='../Y/passwd.html' title='Multiple used in 88 places.'>passwd</a> = <a href='../Y/getpwnam.html' title='Multiple used in 8 places.'>getpwnam</a> (<a href='../Y/name.html' title='Multiple used in 736 places.'>name</a>);
<a id='L696' name='L696'></a> 696             <a href='../Y/q.html' title='Multiple used in 413 places.'>q</a>++;
<a id='L697' name='L697'></a> 697             <a href='../Y/g_free.html' title='Multiple used in 1230 places.'>g_free</a> (<a href='../Y/name.html' title='Multiple used in 736 places.'>name</a>);
<a id='L698' name='L698'></a> 698         <em class='brace'>}</em>
<a id='L699' name='L699'></a> 699     <em class='brace'>}</em>
<a id='L700' name='L700'></a> 700 
<a id='L701' name='L701'></a> 701     <em class='comment'>/* If we can't figure the user name, leave tilde unexpanded */</em>
<a id='L702' name='L702'></a> 702     <strong class='reserved'>if</strong> (<a href='../Y/passwd.html' title='Multiple used in 88 places.'>passwd</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L703' name='L703'></a> 703         <strong class='reserved'>return</strong> <a href='../Y/g_strdup.html' title='Multiple used in 444 places.'>g_strdup</a> (<a href='../Y/directory.html' title='Multiple used in 37 places.'>directory</a>);
<a id='L704' name='L704'></a> 704 
<a id='L705' name='L705'></a> 705     <strong class='reserved'>return</strong> <a href='../Y/g_strconcat.html' title='Multiple used in 73 places.'>g_strconcat</a> (<a href='../Y/passwd.html' title='Multiple used in 88 places.'>passwd</a>-&gt;<a href='../Y/pw_dir.html' title='Multiple used in 2 places.'>pw_dir</a>, <a href='../S/lib--global.h.html#L127' title='Defined at 127 in lib/global.h.'>PATH_SEP_STR</a>, <a href='../Y/q.html' title='Multiple used in 413 places.'>q</a>, (<strong class='reserved'>char</strong> *) <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L706' name='L706'></a> 706 <em class='brace'>}</em>
<a id='L707' name='L707'></a> 707 
<a id='L708' name='L708'></a> 708 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L709' name='L709'></a> 709 <em class='comment'>/**</em>
<a id='L710' name='L710'></a> 710 <em class='comment'> * Creates a pipe to hold standard error for a later analysis.</em>
<a id='L711' name='L711'></a> 711 <em class='comment'> * The pipe can hold 4096 bytes. Make sure no more is written</em>
<a id='L712' name='L712'></a> 712 <em class='comment'> * or a deadlock might occur.</em>
<a id='L713' name='L713'></a> 713 <em class='comment'> */</em>
<a id='L714' name='L714'></a> 714 
<a id='L715' name='L715'></a> 715 <strong class='reserved'>void</strong>
<a id='L716' name='L716'></a> 716 <a href='../R/open_error_pipe.html' title='Multiple referred from 5 places.'>open_error_pipe</a> (<strong class='reserved'>void</strong>)
     <em class='comment'>/* <a href='#L669'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L773'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+716 lib/utilunix.c'  /> */</em>
<a id='L717' name='L717'></a> 717 <em class='brace'>{</em>
<a id='L718' name='L718'></a> 718     <strong class='reserved'>int</strong> <a href='../Y/error_fd.html' title='Multiple used in 4 places.'>error_fd</a> = -1;
<a id='L719' name='L719'></a> 719 
<a id='L720' name='L720'></a> 720     <strong class='reserved'>if</strong> (<a href='../Y/pipe.html' title='Multiple used in 7 places.'>pipe</a> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>) &lt; 0)
<a id='L721' name='L721'></a> 721         <a href='../D/message.html' title='Multiple defined in 5 places.'>message</a> (<a href='../S/lib--widget--wtools.h.html#L30' title='Defined at 30 in lib/widget/wtools.h.'>D_NORMAL</a>, <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Warning"), <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Pipe failed"));
<a id='L722' name='L722'></a> 722 
<a id='L723' name='L723'></a> 723     <a href='../Y/old_error.html' title='Multiple used in 6 places.'>old_error</a> = <a href='../Y/dup.html' title='Multiple used in 2 places.'>dup</a> (<a href='../S/lib--unixcompat.h.html#L50' title='Defined at 50 in lib/unixcompat.h.'>STDERR_FILENO</a>);
<a id='L724' name='L724'></a> 724     <strong class='reserved'>if</strong> (<a href='../Y/old_error.html' title='Multiple used in 6 places.'>old_error</a> &lt; 0 || <a href='../Y/close.html' title='Multiple used in 154 places.'>close</a> (<a href='../S/lib--unixcompat.h.html#L50' title='Defined at 50 in lib/unixcompat.h.'>STDERR_FILENO</a>) != 0
<a id='L725' name='L725'></a> 725         || (<a href='../Y/error_fd.html' title='Multiple used in 4 places.'>error_fd</a> = <a href='../Y/dup.html' title='Multiple used in 2 places.'>dup</a> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[1])) != <a href='../S/lib--unixcompat.h.html#L50' title='Defined at 50 in lib/unixcompat.h.'>STDERR_FILENO</a>)
<a id='L726' name='L726'></a> 726     <em class='brace'>{</em>
<a id='L727' name='L727'></a> 727         <a href='../D/message.html' title='Multiple defined in 5 places.'>message</a> (<a href='../S/lib--widget--wtools.h.html#L30' title='Defined at 30 in lib/widget/wtools.h.'>D_NORMAL</a>, <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Warning"), <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Dup failed"));
<a id='L728' name='L728'></a> 728 
<a id='L729' name='L729'></a> 729         <a href='../Y/close.html' title='Multiple used in 154 places.'>close</a> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[0]);
<a id='L730' name='L730'></a> 730         <a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[0] = -1;
<a id='L731' name='L731'></a> 731     <em class='brace'>}</em>
<a id='L732' name='L732'></a> 732     <strong class='reserved'>else</strong>
<a id='L733' name='L733'></a> 733     <em class='brace'>{</em>
<a id='L734' name='L734'></a> 734         <em class='comment'>/*</em>
<a id='L735' name='L735'></a> 735 <em class='comment'>         * Settng stderr in nonblocking mode as we close it earlier, than</em>
<a id='L736' name='L736'></a> 736 <em class='comment'>         * program stops. We try to read some error at program startup,</em>
<a id='L737' name='L737'></a> 737 <em class='comment'>         * but we should not block on it.</em>
<a id='L738' name='L738'></a> 738 <em class='comment'>         *</em>
<a id='L739' name='L739'></a> 739 <em class='comment'>         * TODO: make piped stdin/stderr poll()/select()able to get rid</em>
<a id='L740' name='L740'></a> 740 <em class='comment'>         * of following hack.</em>
<a id='L741' name='L741'></a> 741 <em class='comment'>         */</em>
<a id='L742' name='L742'></a> 742         <strong class='reserved'>int</strong> <a href='../Y/fd_flags.html' title='Multiple used in 5 places.'>fd_flags</a>;
<a id='L743' name='L743'></a> 743 
<a id='L744' name='L744'></a> 744         <a href='../Y/fd_flags.html' title='Multiple used in 5 places.'>fd_flags</a> = <a href='../Y/fcntl.html' title='Multiple used in 8 places.'>fcntl</a> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[0], <a href='../Y/F_GETFL.html' title='Multiple used in 2 places.'>F_GETFL</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L745' name='L745'></a> 745         <strong class='reserved'>if</strong> (<a href='../Y/fd_flags.html' title='Multiple used in 5 places.'>fd_flags</a> != -1)
<a id='L746' name='L746'></a> 746         <em class='brace'>{</em>
<a id='L747' name='L747'></a> 747             <a href='../Y/fd_flags.html' title='Multiple used in 5 places.'>fd_flags</a> |= <a href='../D/O_NONBLOCK.html' title='Multiple defined in 2 places.'>O_NONBLOCK</a>;
<a id='L748' name='L748'></a> 748 
<a id='L749' name='L749'></a> 749             <strong class='reserved'>if</strong> (<a href='../Y/fcntl.html' title='Multiple used in 8 places.'>fcntl</a> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[0], <a href='../Y/F_SETFL.html' title='Multiple used in 2 places.'>F_SETFL</a>, <a href='../Y/fd_flags.html' title='Multiple used in 5 places.'>fd_flags</a>) == -1)
<a id='L750' name='L750'></a> 750             <em class='brace'>{</em>
<a id='L751' name='L751'></a> 751                 <em class='comment'>/* TODO: handle it somehow */</em>
<a id='L752' name='L752'></a> 752             <em class='brace'>}</em>
<a id='L753' name='L753'></a> 753         <em class='brace'>}</em>
<a id='L754' name='L754'></a> 754     <em class='brace'>}</em>
<a id='L755' name='L755'></a> 755     <strong class='reserved'>if</strong> (<a href='../Y/error_fd.html' title='Multiple used in 4 places.'>error_fd</a> &gt;= 0)
<a id='L756' name='L756'></a> 756         <a href='../Y/close.html' title='Multiple used in 154 places.'>close</a> (<a href='../Y/error_fd.html' title='Multiple used in 4 places.'>error_fd</a>);
<a id='L757' name='L757'></a> 757     <em class='comment'>/* we never write there */</em>
<a id='L758' name='L758'></a> 758     <a href='../Y/close.html' title='Multiple used in 154 places.'>close</a> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[1]);
<a id='L759' name='L759'></a> 759     <a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[1] = -1;
<a id='L760' name='L760'></a> 760 <em class='brace'>}</em>
<a id='L761' name='L761'></a> 761 
<a id='L762' name='L762'></a> 762 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L763' name='L763'></a> 763 <em class='comment'>/**</em>
<a id='L764' name='L764'></a> 764 <em class='comment'> * Close a pipe</em>
<a id='L765' name='L765'></a> 765 <em class='comment'> *</em>
<a id='L766' name='L766'></a> 766 <em class='comment'> * @param error '-1' - ignore errors, '0' - display warning, '1' - display error</em>
<a id='L767' name='L767'></a> 767 <em class='comment'> * @param text is prepended to the error message from the pipe</em>
<a id='L768' name='L768'></a> 768 <em class='comment'> *</em>
<a id='L769' name='L769'></a> 769 <em class='comment'> * @return not 0 if an error was displayed</em>
<a id='L770' name='L770'></a> 770 <em class='comment'> */</em>
<a id='L771' name='L771'></a> 771 
<a id='L772' name='L772'></a> 772 <strong class='reserved'>int</strong>
<a id='L773' name='L773'></a> 773 <a href='../R/close_error_pipe.html' title='Multiple referred from 10 places.'>close_error_pipe</a> (<strong class='reserved'>int</strong> <a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>, <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/text.html' title='Multiple used in 945 places.'>text</a>)
     <em class='comment'>/* <a href='#L716'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L836'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+773 lib/utilunix.c'  /> */</em>
<a id='L774' name='L774'></a> 774 <em class='brace'>{</em>
<a id='L775' name='L775'></a> 775     <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/title.html' title='Multiple used in 169 places.'>title</a>;
<a id='L776' name='L776'></a> 776     <strong class='reserved'>char</strong> <a href='../Y/msg.html' title='Multiple used in 374 places.'>msg</a>[<a href='../S/lib--utilunix.c.html#L91' title='Defined at 91 in lib/utilunix.c.'>MAX_PIPE_SIZE</a>];
<a id='L777' name='L777'></a> 777     <strong class='reserved'>int</strong> <a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = 0;
<a id='L778' name='L778'></a> 778 
<a id='L779' name='L779'></a> 779     <em class='comment'>/* already closed */</em>
<a id='L780' name='L780'></a> 780     <strong class='reserved'>if</strong> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[0] == -1)
<a id='L781' name='L781'></a> 781         <strong class='reserved'>return</strong> 0;
<a id='L782' name='L782'></a> 782 
<a id='L783' name='L783'></a> 783     <strong class='reserved'>if</strong> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> &lt; 0 || (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> &gt; 0 &amp;&amp; (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> &amp; <a href='../S/lib--widget--wtools.h.html#L31' title='Defined at 31 in lib/widget/wtools.h.'>D_ERROR</a>) != 0))
<a id='L784' name='L784'></a> 784         <a href='../Y/title.html' title='Multiple used in 169 places.'>title</a> = <a href='../S/lib--widget--wtools.h.html#L14' title='Defined at 14 in lib/widget/wtools.h.'>MSG_ERROR</a>;
<a id='L785' name='L785'></a> 785     <strong class='reserved'>else</strong>
<a id='L786' name='L786'></a> 786         <a href='../Y/title.html' title='Multiple used in 169 places.'>title</a> = <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Warning");
<a id='L787' name='L787'></a> 787     <strong class='reserved'>if</strong> (<a href='../Y/old_error.html' title='Multiple used in 6 places.'>old_error</a> &gt;= 0)
<a id='L788' name='L788'></a> 788     <em class='brace'>{</em>
<a id='L789' name='L789'></a> 789         <strong class='reserved'>if</strong> (<a href='../Y/dup2.html' title='Multiple used in 13 places.'>dup2</a> (<a href='../Y/old_error.html' title='Multiple used in 6 places.'>old_error</a>, <a href='../S/lib--unixcompat.h.html#L50' title='Defined at 50 in lib/unixcompat.h.'>STDERR_FILENO</a>) == -1)
<a id='L790' name='L790'></a> 790         <em class='brace'>{</em>
<a id='L791' name='L791'></a> 791             <strong class='reserved'>if</strong> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> &lt; 0)
<a id='L792' name='L792'></a> 792                 <a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> = <a href='../S/lib--widget--wtools.h.html#L31' title='Defined at 31 in lib/widget/wtools.h.'>D_ERROR</a>;
<a id='L793' name='L793'></a> 793 
<a id='L794' name='L794'></a> 794             <a href='../D/message.html' title='Multiple defined in 5 places.'>message</a> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>, <a href='../S/lib--widget--wtools.h.html#L14' title='Defined at 14 in lib/widget/wtools.h.'>MSG_ERROR</a>, <a href='../D/_.html' title='Multiple defined in 2 places.'>_</a>("Error dup'ing old error pipe"));
<a id='L795' name='L795'></a> 795             <strong class='reserved'>return</strong> 1;
<a id='L796' name='L796'></a> 796         <em class='brace'>}</em>
<a id='L797' name='L797'></a> 797         <a href='../Y/close.html' title='Multiple used in 154 places.'>close</a> (<a href='../Y/old_error.html' title='Multiple used in 6 places.'>old_error</a>);
<a id='L798' name='L798'></a> 798         <a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../Y/read.html' title='Multiple used in 82 places.'>read</a> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[0], <a href='../Y/msg.html' title='Multiple used in 374 places.'>msg</a>, <strong class='reserved'>sizeof</strong> (<a href='../Y/msg.html' title='Multiple used in 374 places.'>msg</a>) - 1);
<a id='L799' name='L799'></a> 799 
<a id='L800' name='L800'></a> 800         <strong class='reserved'>if</strong> (<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> &gt;= 0)
<a id='L801' name='L801'></a> 801             <a href='../Y/msg.html' title='Multiple used in 374 places.'>msg</a>[<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a>] = 0;
<a id='L802' name='L802'></a> 802         <a href='../Y/close.html' title='Multiple used in 154 places.'>close</a> (<a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[0]);
<a id='L803' name='L803'></a> 803         <a href='../Y/error_pipe.html' title='Multiple used in 13 places.'>error_pipe</a>[0] = -1;
<a id='L804' name='L804'></a> 804     <em class='brace'>}</em>
<a id='L805' name='L805'></a> 805     <strong class='reserved'>if</strong> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a> &lt; 0)
<a id='L806' name='L806'></a> 806         <strong class='reserved'>return</strong> 0;               <em class='comment'>/* Just ignore error message */</em>
<a id='L807' name='L807'></a> 807     <strong class='reserved'>if</strong> (<a href='../Y/text.html' title='Multiple used in 945 places.'>text</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L808' name='L808'></a> 808     <em class='brace'>{</em>
<a id='L809' name='L809'></a> 809         <strong class='reserved'>if</strong> (<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> &lt;= 0)
<a id='L810' name='L810'></a> 810             <strong class='reserved'>return</strong> 0;           <em class='comment'>/* Nothing to show */</em>
<a id='L811' name='L811'></a> 811 
<a id='L812' name='L812'></a> 812         <em class='comment'>/* Show message from pipe */</em>
<a id='L813' name='L813'></a> 813         <a href='../D/message.html' title='Multiple defined in 5 places.'>message</a> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>, <a href='../Y/title.html' title='Multiple used in 169 places.'>title</a>, "%s", <a href='../Y/msg.html' title='Multiple used in 374 places.'>msg</a>);
<a id='L814' name='L814'></a> 814     <em class='brace'>}</em>
<a id='L815' name='L815'></a> 815     <strong class='reserved'>else</strong>
<a id='L816' name='L816'></a> 816     <em class='brace'>{</em>
<a id='L817' name='L817'></a> 817         <em class='comment'>/* Show given text and possible message from pipe */</em>
<a id='L818' name='L818'></a> 818         <a href='../D/message.html' title='Multiple defined in 5 places.'>message</a> (<a href='../Y/error.html' title='Multiple used in 229 places.'>error</a>, <a href='../Y/title.html' title='Multiple used in 169 places.'>title</a>, "%s\n%s", <a href='../Y/text.html' title='Multiple used in 945 places.'>text</a>, <a href='../Y/msg.html' title='Multiple used in 374 places.'>msg</a>);
<a id='L819' name='L819'></a> 819     <em class='brace'>}</em>
<a id='L820' name='L820'></a> 820     <strong class='reserved'>return</strong> 1;
<a id='L821' name='L821'></a> 821 <em class='brace'>}</em>
<a id='L822' name='L822'></a> 822 
<a id='L823' name='L823'></a> 823 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L824' name='L824'></a> 824 <em class='comment'>/**</em>
<a id='L825' name='L825'></a> 825 <em class='comment'> * Canonicalize path, and return a new path.  Do everything in place.</em>
<a id='L826' name='L826'></a> 826 <em class='comment'> * The new path differs from path in:</em>
<a id='L827' name='L827'></a> 827 <em class='comment'> *      Multiple '/'s are collapsed to a single '/'.</em>
<a id='L828' name='L828'></a> 828 <em class='comment'> *      Leading './'s and trailing '/.'s are removed.</em>
<a id='L829' name='L829'></a> 829 <em class='comment'> *      Trailing '/'s are removed.</em>
<a id='L830' name='L830'></a> 830 <em class='comment'> *      Non-leading '../'s and trailing '..'s are handled by removing</em>
<a id='L831' name='L831'></a> 831 <em class='comment'> *      portions of the path.</em>
<a id='L832' name='L832'></a> 832 <em class='comment'> * Well formed UNC paths are modified only in the local part.</em>
<a id='L833' name='L833'></a> 833 <em class='comment'> */</em>
<a id='L834' name='L834'></a> 834 
<a id='L835' name='L835'></a> 835 <strong class='reserved'>void</strong>
<a id='L836' name='L836'></a> 836 <a href='../R/custom_canonicalize_pathname.html' title='Multiple referred from 4 places.'>custom_canonicalize_pathname</a> (<strong class='reserved'>char</strong> *<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>, <a href='../S/lib--util.h.html#L68' title='Defined at 68 in lib/util.h.'>CANON_PATH_FLAGS</a> <a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a>)
     <em class='comment'>/* <a href='#L773'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1059'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+836 lib/utilunix.c'  /> */</em>
<a id='L837' name='L837'></a> 837 <em class='brace'>{</em>
<a id='L838' name='L838'></a> 838     <strong class='reserved'>char</strong> *<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, *<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>;
<a id='L839' name='L839'></a> 839     <strong class='reserved'>char</strong> *<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> = <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>;         <em class='comment'>/* path without leading UNC part */</em>
<a id='L840' name='L840'></a> 840     <strong class='reserved'>const</strong> <a href='../Y/size_t.html' title='Multiple used in 726 places.'>size_t</a> <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a> = <a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../S/lib--vfs--path.h.html#L6' title='Defined at 6 in lib/vfs/path.h.'>VFS_PATH_URL_DELIMITER</a>);
<a id='L841' name='L841'></a> 841 
<a id='L842' name='L842'></a> 842     <em class='comment'>/* Detect and preserve UNC paths: //server/... */</em>
<a id='L843' name='L843'></a> 843     <strong class='reserved'>if</strong> ((<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a> &amp; <a href='../S/lib--util.h.html#L65' title='Defined at 65 in lib/util.h.'>CANON_PATH_GUARDUNC</a>) != 0 &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>[0]) &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>[1]))
<a id='L844' name='L844'></a> 844     <em class='brace'>{</em>
<a id='L845' name='L845'></a> 845         <strong class='reserved'>for</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> + 2; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[0] != '\0' &amp;&amp; !<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[0]); <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>++)
<a id='L846' name='L846'></a> 846             ;
<a id='L847' name='L847'></a> 847         <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[0]) &amp;&amp; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> &gt; <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> + 2)
<a id='L848' name='L848'></a> 848             <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> = <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>;
<a id='L849' name='L849'></a> 849     <em class='brace'>}</em>
<a id='L850' name='L850'></a> 850 
<a id='L851' name='L851'></a> 851     <strong class='reserved'>if</strong> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[0] == '\0' || <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[1] == '\0')
<a id='L852' name='L852'></a> 852         <strong class='reserved'>return</strong>;
<a id='L853' name='L853'></a> 853 
<a id='L854' name='L854'></a> 854     <strong class='reserved'>if</strong> ((<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a> &amp; <a href='../S/lib--util.h.html#L62' title='Defined at 62 in lib/util.h.'>CANON_PATH_JOINSLASHES</a>) != 0)
<a id='L855' name='L855'></a> 855     <em class='brace'>{</em>
<a id='L856' name='L856'></a> 856         <em class='comment'>/* Collapse multiple slashes */</em>
<a id='L857' name='L857'></a> 857         <strong class='reserved'>for</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>; *<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> != '\0'; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>++)
<a id='L858' name='L858'></a> 858             <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[0]) &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[1]) &amp;&amp; (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> == <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> || *(<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> - 1) != ':'))
<a id='L859' name='L859'></a> 859             <em class='brace'>{</em>
<a id='L860' name='L860'></a> 860                 <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> = <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> + 1;
<a id='L861' name='L861'></a> 861                 <strong class='reserved'>while</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*(++<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>)))
<a id='L862' name='L862'></a> 862                     ;
<a id='L863' name='L863'></a> 863                 <a href='../S/lib--strutil.h.html#L619' title='Defined at 619 in lib/strutil.h.'>str_move</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> + 1, <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>);
<a id='L864' name='L864'></a> 864             <em class='brace'>}</em>
<a id='L865' name='L865'></a> 865 
<a id='L866' name='L866'></a> 866         <em class='comment'>/* Collapse "/./" -&gt; "/" */</em>
<a id='L867' name='L867'></a> 867         <strong class='reserved'>for</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>; *<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> != '\0';)
<a id='L868' name='L868'></a> 868             <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[0]) &amp;&amp; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[1] == '.' &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[2]))
<a id='L869' name='L869'></a> 869                 <a href='../S/lib--strutil.h.html#L619' title='Defined at 619 in lib/strutil.h.'>str_move</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> + 2);
<a id='L870' name='L870'></a> 870             <strong class='reserved'>else</strong>
<a id='L871' name='L871'></a> 871                 <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>++;
<a id='L872' name='L872'></a> 872     <em class='brace'>}</em>
<a id='L873' name='L873'></a> 873 
<a id='L874' name='L874'></a> 874     <strong class='reserved'>if</strong> ((<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a> &amp; <a href='../S/lib--util.h.html#L63' title='Defined at 63 in lib/util.h.'>CANON_PATH_REMSLASHDOTS</a>) != 0)
<a id='L875' name='L875'></a> 875     <em class='brace'>{</em>
<a id='L876' name='L876'></a> 876         <a href='../Y/size_t.html' title='Multiple used in 726 places.'>size_t</a> <a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a>;
<a id='L877' name='L877'></a> 877 
<a id='L878' name='L878'></a> 878         <em class='comment'>/* Remove trailing slashes */</em>
<a id='L879' name='L879'></a> 879         <strong class='reserved'>for</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> + <a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>) - 1; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> &gt; <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>); <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>--)
<a id='L880' name='L880'></a> 880         <em class='brace'>{</em>
<a id='L881' name='L881'></a> 881             <strong class='reserved'>if</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> &gt;= <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> + <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a> - 1
<a id='L882' name='L882'></a> 882                 &amp;&amp; <a href='../Y/strncmp.html' title='Multiple used in 127 places.'>strncmp</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a> + 1, <a href='../S/lib--vfs--path.h.html#L6' title='Defined at 6 in lib/vfs/path.h.'>VFS_PATH_URL_DELIMITER</a>, <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>) == 0)
<a id='L883' name='L883'></a> 883                 <strong class='reserved'>break</strong>;
<a id='L884' name='L884'></a> 884             *<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = '\0';
<a id='L885' name='L885'></a> 885         <em class='brace'>}</em>
<a id='L886' name='L886'></a> 886 
<a id='L887' name='L887'></a> 887         <em class='comment'>/* Remove leading "./" */</em>
<a id='L888' name='L888'></a> 888         <strong class='reserved'>if</strong> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[0] == '.' &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[1]))
<a id='L889' name='L889'></a> 889         <em class='brace'>{</em>
<a id='L890' name='L890'></a> 890             <strong class='reserved'>if</strong> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[2] == '\0')
<a id='L891' name='L891'></a> 891             <em class='brace'>{</em>
<a id='L892' name='L892'></a> 892                 <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[1] = '\0';
<a id='L893' name='L893'></a> 893                 <strong class='reserved'>return</strong>;
<a id='L894' name='L894'></a> 894             <em class='brace'>}</em>
<a id='L895' name='L895'></a> 895 
<a id='L896' name='L896'></a> 896             <a href='../S/lib--strutil.h.html#L619' title='Defined at 619 in lib/strutil.h.'>str_move</a> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>, <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> + 2);
<a id='L897' name='L897'></a> 897         <em class='brace'>}</em>
<a id='L898' name='L898'></a> 898 
<a id='L899' name='L899'></a> 899         <em class='comment'>/* Remove trailing "/" or "/." */</em>
<a id='L900' name='L900'></a> 900         <a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>);
<a id='L901' name='L901'></a> 901         <strong class='reserved'>if</strong> (<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> &lt; 2)
<a id='L902' name='L902'></a> 902             <strong class='reserved'>return</strong>;
<a id='L903' name='L903'></a> 903 
<a id='L904' name='L904'></a> 904         <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> - 1])
<a id='L905' name='L905'></a> 905             &amp;&amp; (<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> &lt; <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>
<a id='L906' name='L906'></a> 906                 || <a href='../Y/strncmp.html' title='Multiple used in 127 places.'>strncmp</a> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> + <a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>, <a href='../S/lib--vfs--path.h.html#L6' title='Defined at 6 in lib/vfs/path.h.'>VFS_PATH_URL_DELIMITER</a>,
<a id='L907' name='L907'></a> 907                             <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>) != 0))
<a id='L908' name='L908'></a> 908             <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> - 1] = '\0';
<a id='L909' name='L909'></a> 909         <strong class='reserved'>else</strong> <strong class='reserved'>if</strong> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> - 1] == '.' &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> - 2]))
<a id='L910' name='L910'></a> 910         <em class='brace'>{</em>
<a id='L911' name='L911'></a> 911             <strong class='reserved'>if</strong> (<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> == 2)
<a id='L912' name='L912'></a> 912             <em class='brace'>{</em>
<a id='L913' name='L913'></a> 913                 <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[1] = '\0';
<a id='L914' name='L914'></a> 914                 <strong class='reserved'>return</strong>;
<a id='L915' name='L915'></a> 915             <em class='brace'>}</em>
<a id='L916' name='L916'></a> 916 
<a id='L917' name='L917'></a> 917             <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> - 2] = '\0';
<a id='L918' name='L918'></a> 918         <em class='brace'>}</em>
<a id='L919' name='L919'></a> 919     <em class='brace'>}</em>
<a id='L920' name='L920'></a> 920 
<a id='L921' name='L921'></a> 921     <em class='comment'>/* Collapse "/.." with the previous part of path */</em>
<a id='L922' name='L922'></a> 922     <strong class='reserved'>if</strong> ((<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a> &amp; <a href='../S/lib--util.h.html#L64' title='Defined at 64 in lib/util.h.'>CANON_PATH_REMDOUBLEDOTS</a>) != 0)
<a id='L923' name='L923'></a> 923     <em class='brace'>{</em>
<a id='L924' name='L924'></a> 924 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L925' name='L925'></a> 925         <strong class='reserved'>const</strong> <a href='../Y/size_t.html' title='Multiple used in 726 places.'>size_t</a> <a href='../Y/enc_prefix_len.html' title='Multiple used in 5 places.'>enc_prefix_len</a> = <a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../S/lib--vfs--vfs.h.html#L41' title='Defined at 41 in lib/vfs/vfs.h.'>VFS_ENCODING_PREFIX</a>);
<a id='L926' name='L926'></a> 926 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L927' name='L927'></a> 927 
<a id='L928' name='L928'></a> 928         <strong class='reserved'>for</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[0] != '\0' &amp;&amp; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[1] != '\0' &amp;&amp; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[2] != '\0';)
<a id='L929' name='L929'></a> 929         <em class='brace'>{</em>
<a id='L930' name='L930'></a> 930             <strong class='reserved'>if</strong> (!<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[0]) || <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[1] != '.' || <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[2] != '.'
<a id='L931' name='L931'></a> 931                 || (!<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[3]) &amp;&amp; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[3] != '\0'))
<a id='L932' name='L932'></a> 932             <em class='brace'>{</em>
<a id='L933' name='L933'></a> 933                 <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>++;
<a id='L934' name='L934'></a> 934                 <strong class='reserved'>continue</strong>;
<a id='L935' name='L935'></a> 935             <em class='brace'>}</em>
<a id='L936' name='L936'></a> 936 
<a id='L937' name='L937'></a> 937             <em class='comment'>/* search for the previous token */</em>
<a id='L938' name='L938'></a> 938             <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> = <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> - 1;
<a id='L939' name='L939'></a> 939             <strong class='reserved'>if</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> &gt;= <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> + <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a> - 2
<a id='L940' name='L940'></a> 940                 &amp;&amp; <a href='../Y/strncmp.html' title='Multiple used in 127 places.'>strncmp</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a> + 2, <a href='../S/lib--vfs--path.h.html#L6' title='Defined at 6 in lib/vfs/path.h.'>VFS_PATH_URL_DELIMITER</a>, <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>) == 0)
<a id='L941' name='L941'></a> 941             <em class='brace'>{</em>
<a id='L942' name='L942'></a> 942                 <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> -= (<a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a> - 2);
<a id='L943' name='L943'></a> 943                 <strong class='reserved'>while</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> &gt;= <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> &amp;&amp; !<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>--))
<a id='L944' name='L944'></a> 944                     ;
<a id='L945' name='L945'></a> 945             <em class='brace'>}</em>
<a id='L946' name='L946'></a> 946 
<a id='L947' name='L947'></a> 947             <strong class='reserved'>while</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> &gt;= <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>)
<a id='L948' name='L948'></a> 948             <em class='brace'>{</em>
<a id='L949' name='L949'></a> 949                 <strong class='reserved'>if</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a> &gt; <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>
<a id='L950' name='L950'></a> 950                     &amp;&amp; <a href='../Y/strncmp.html' title='Multiple used in 127 places.'>strncmp</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>, <a href='../S/lib--vfs--path.h.html#L6' title='Defined at 6 in lib/vfs/path.h.'>VFS_PATH_URL_DELIMITER</a>, <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>) == 0)
<a id='L951' name='L951'></a> 951                 <em class='brace'>{</em>
<a id='L952' name='L952'></a> 952                     <strong class='reserved'>char</strong> *<a href='../Y/vfs_prefix.html' title='Multiple used in 23 places.'>vfs_prefix</a> = <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>;
<a id='L953' name='L953'></a> 953                     <a href='../D/vfs_class.html' title='Multiple defined in 2 places.'>vfs_class</a> *<a href='../Y/vclass.html' title='Multiple used in 55 places.'>vclass</a>;
<a id='L954' name='L954'></a> 954 
<a id='L955' name='L955'></a> 955                     <strong class='reserved'>while</strong> (<a href='../Y/vfs_prefix.html' title='Multiple used in 23 places.'>vfs_prefix</a> &gt; <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> &amp;&amp; !<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*--<a href='../Y/vfs_prefix.html' title='Multiple used in 23 places.'>vfs_prefix</a>))
<a id='L956' name='L956'></a> 956                         ;
<a id='L957' name='L957'></a> 957                     <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/vfs_prefix.html' title='Multiple used in 23 places.'>vfs_prefix</a>))
<a id='L958' name='L958'></a> 958                         <a href='../Y/vfs_prefix.html' title='Multiple used in 23 places.'>vfs_prefix</a>++;
<a id='L959' name='L959'></a> 959                     *(<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>) = '\0';
<a id='L960' name='L960'></a> 960 
<a id='L961' name='L961'></a> 961                     <a href='../Y/vclass.html' title='Multiple used in 55 places.'>vclass</a> = <a href='../S/lib--vfs--path.c.html#L998' title='Defined at 998 in lib/vfs/path.c.'>vfs_prefix_to_class</a> (<a href='../Y/vfs_prefix.html' title='Multiple used in 23 places.'>vfs_prefix</a>);
<a id='L962' name='L962'></a> 962                     *(<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>) = *<a href='../S/lib--vfs--path.h.html#L6' title='Defined at 6 in lib/vfs/path.h.'>VFS_PATH_URL_DELIMITER</a>;
<a id='L963' name='L963'></a> 963 
<a id='L964' name='L964'></a> 964                     <strong class='reserved'>if</strong> (<a href='../Y/vclass.html' title='Multiple used in 55 places.'>vclass</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a> &amp;&amp; (<a href='../Y/vclass.html' title='Multiple used in 55 places.'>vclass</a>-&gt;<a href='../Y/flags.html' title='Multiple used in 420 places.'>flags</a> &amp; <a href='../S/lib--vfs--vfs.h.html#L117' title='Defined at 117 in lib/vfs/vfs.h.'>VFSF_REMOTE</a>) != 0)
<a id='L965' name='L965'></a> 965                     <em class='brace'>{</em>
<a id='L966' name='L966'></a> 966                         <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> = <a href='../Y/vfs_prefix.html' title='Multiple used in 23 places.'>vfs_prefix</a>;
<a id='L967' name='L967'></a> 967                         <strong class='reserved'>continue</strong>;
<a id='L968' name='L968'></a> 968                     <em class='brace'>}</em>
<a id='L969' name='L969'></a> 969                 <em class='brace'>}</em>
<a id='L970' name='L970'></a> 970 
<a id='L971' name='L971'></a> 971                 <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>))
<a id='L972' name='L972'></a> 972                     <strong class='reserved'>break</strong>;
<a id='L973' name='L973'></a> 973 
<a id='L974' name='L974'></a> 974                 <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>--;
<a id='L975' name='L975'></a> 975             <em class='brace'>}</em>
<a id='L976' name='L976'></a> 976 
<a id='L977' name='L977'></a> 977             <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>++;
<a id='L978' name='L978'></a> 978 
<a id='L979' name='L979'></a> 979             <em class='comment'>/* If the previous token is "..", we cannot collapse it */</em>
<a id='L980' name='L980'></a> 980             <strong class='reserved'>if</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[0] == '.' &amp;&amp; <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[1] == '.' &amp;&amp; <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> + 2 == <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>)
<a id='L981' name='L981'></a> 981             <em class='brace'>{</em>
<a id='L982' name='L982'></a> 982                 <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> += 3;
<a id='L983' name='L983'></a> 983                 <strong class='reserved'>continue</strong>;
<a id='L984' name='L984'></a> 984             <em class='brace'>}</em>
<a id='L985' name='L985'></a> 985 
<a id='L986' name='L986'></a> 986             <strong class='reserved'>if</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[3] != '\0')
<a id='L987' name='L987'></a> 987             <em class='brace'>{</em>
<a id='L988' name='L988'></a> 988                 <strong class='reserved'>if</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> == <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>))
<a id='L989' name='L989'></a> 989                 <em class='brace'>{</em>
<a id='L990' name='L990'></a> 990                     <em class='comment'>/* "/../foo" -&gt; "/foo" */</em>
<a id='L991' name='L991'></a> 991                     <a href='../S/lib--strutil.h.html#L619' title='Defined at 619 in lib/strutil.h.'>str_move</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> + 1, <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> + 4);
<a id='L992' name='L992'></a> 992                 <em class='brace'>}</em>
<a id='L993' name='L993'></a> 993                 <strong class='reserved'>else</strong>
<a id='L994' name='L994'></a> 994                 <em class='brace'>{</em>
<a id='L995' name='L995'></a> 995                     <em class='comment'>/* "token/../foo" -&gt; "foo" */</em>
<a id='L996' name='L996'></a> 996 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L997' name='L997'></a> 997                     <strong class='reserved'>if</strong> ((<a href='../Y/strncmp.html' title='Multiple used in 127 places.'>strncmp</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>, <a href='../S/lib--vfs--vfs.h.html#L41' title='Defined at 41 in lib/vfs/vfs.h.'>VFS_ENCODING_PREFIX</a>, <a href='../Y/enc_prefix_len.html' title='Multiple used in 5 places.'>enc_prefix_len</a>) == 0)
<a id='L998' name='L998'></a> 998                         &amp;&amp; (<a href='../S/lib--charsets.c.html#L267' title='Defined at 267 in lib/charsets.c.'>is_supported_encoding</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> + <a href='../Y/enc_prefix_len.html' title='Multiple used in 5 places.'>enc_prefix_len</a>)))
<a id='L999' name='L999'></a> 999                         <em class='comment'>/* special case: remove encoding */</em>
<a id='L1000' name='L1000'></a>1000                         <a href='../S/lib--strutil.h.html#L619' title='Defined at 619 in lib/strutil.h.'>str_move</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>, <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> + 1);
<a id='L1001' name='L1001'></a>1001                     <strong class='reserved'>else</strong>
<a id='L1002' name='L1002'></a>1002 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L1003' name='L1003'></a>1003                         <a href='../S/lib--strutil.h.html#L619' title='Defined at 619 in lib/strutil.h.'>str_move</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>, <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> + 4);
<a id='L1004' name='L1004'></a>1004                 <em class='brace'>}</em>
<a id='L1005' name='L1005'></a>1005 
<a id='L1006' name='L1006'></a>1006                 <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> &gt; <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> ? <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - 1 : <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>;
<a id='L1007' name='L1007'></a>1007                 <strong class='reserved'>continue</strong>;
<a id='L1008' name='L1008'></a>1008             <em class='brace'>}</em>
<a id='L1009' name='L1009'></a>1009 
<a id='L1010' name='L1010'></a>1010             <em class='comment'>/* trailing ".." */</em>
<a id='L1011' name='L1011'></a>1011             <strong class='reserved'>if</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> == <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>)
<a id='L1012' name='L1012'></a>1012             <em class='brace'>{</em>
<a id='L1013' name='L1013'></a>1013                 <em class='comment'>/* "token/.." -&gt; "." */</em>
<a id='L1014' name='L1014'></a>1014                 <strong class='reserved'>if</strong> (!<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[0]))
<a id='L1015' name='L1015'></a>1015                     <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[0] = '.';
<a id='L1016' name='L1016'></a>1016                 <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>[1] = '\0';
<a id='L1017' name='L1017'></a>1017             <em class='brace'>}</em>
<a id='L1018' name='L1018'></a>1018             <strong class='reserved'>else</strong>
<a id='L1019' name='L1019'></a>1019             <em class='brace'>{</em>
<a id='L1020' name='L1020'></a>1020                 <em class='comment'>/* "foo/token/.." -&gt; "foo" */</em>
<a id='L1021' name='L1021'></a>1021                 <strong class='reserved'>if</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> == <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> + 1)
<a id='L1022' name='L1022'></a>1022                     <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[0] = '\0';
<a id='L1023' name='L1023'></a>1023 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L1024' name='L1024'></a>1024                 <strong class='reserved'>else</strong> <strong class='reserved'>if</strong> ((<a href='../Y/strncmp.html' title='Multiple used in 127 places.'>strncmp</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>, <a href='../S/lib--vfs--vfs.h.html#L41' title='Defined at 41 in lib/vfs/vfs.h.'>VFS_ENCODING_PREFIX</a>, <a href='../Y/enc_prefix_len.html' title='Multiple used in 5 places.'>enc_prefix_len</a>) == 0)
<a id='L1025' name='L1025'></a>1025                          &amp;&amp; (<a href='../S/lib--charsets.c.html#L267' title='Defined at 267 in lib/charsets.c.'>is_supported_encoding</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> + <a href='../Y/enc_prefix_len.html' title='Multiple used in 5 places.'>enc_prefix_len</a>)))
<a id='L1026' name='L1026'></a>1026                 <em class='brace'>{</em>
<a id='L1027' name='L1027'></a>1027                     <em class='comment'>/* special case: remove encoding */</em>
<a id='L1028' name='L1028'></a>1028                     <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[0] = '.';
<a id='L1029' name='L1029'></a>1029                     <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[1] = '.';
<a id='L1030' name='L1030'></a>1030                     <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[2] = '\0';
<a id='L1031' name='L1031'></a>1031 
<a id='L1032' name='L1032'></a>1032                     <em class='comment'>/* search for the previous token */</em>
<a id='L1033' name='L1033'></a>1033                     <em class='comment'>/* IS_PATH_SEP (s[-1]) */</em>
<a id='L1034' name='L1034'></a>1034                     <strong class='reserved'>for</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - 1; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> &gt;= <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> &amp;&amp; !<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>); <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>--)
<a id='L1035' name='L1035'></a>1035                         ;
<a id='L1036' name='L1036'></a>1036 
<a id='L1037' name='L1037'></a>1037                     <strong class='reserved'>if</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> &gt;= <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a>)
<a id='L1038' name='L1038'></a>1038                         <strong class='reserved'>continue</strong>;
<a id='L1039' name='L1039'></a>1039                 <em class='brace'>}</em>
<a id='L1040' name='L1040'></a>1040 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L1041' name='L1041'></a>1041                 <strong class='reserved'>else</strong>
<a id='L1042' name='L1042'></a>1042                 <em class='brace'>{</em>
<a id='L1043' name='L1043'></a>1043                     <strong class='reserved'>if</strong> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> &gt;= <a href='../Y/lpath.html' title='Multiple used in 35 places.'>lpath</a> + <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>
<a id='L1044' name='L1044'></a>1044                         &amp;&amp; <a href='../Y/strncmp.html' title='Multiple used in 127 places.'>strncmp</a> (<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> - <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>, <a href='../S/lib--vfs--path.h.html#L6' title='Defined at 6 in lib/vfs/path.h.'>VFS_PATH_URL_DELIMITER</a>, <a href='../Y/url_delim_len.html' title='Multiple used in 16 places.'>url_delim_len</a>) == 0)
<a id='L1045' name='L1045'></a>1045                         *<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> = '\0';
<a id='L1046' name='L1046'></a>1046                     <strong class='reserved'>else</strong>
<a id='L1047' name='L1047'></a>1047                         <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[-1] = '\0';
<a id='L1048' name='L1048'></a>1048                 <em class='brace'>}</em>
<a id='L1049' name='L1049'></a>1049             <em class='brace'>}</em>
<a id='L1050' name='L1050'></a>1050 
<a id='L1051' name='L1051'></a>1051             <strong class='reserved'>break</strong>;
<a id='L1052' name='L1052'></a>1052         <em class='brace'>}</em>
<a id='L1053' name='L1053'></a>1053     <em class='brace'>}</em>
<a id='L1054' name='L1054'></a>1054 <em class='brace'>}</em>
<a id='L1055' name='L1055'></a>1055 
<a id='L1056' name='L1056'></a>1056 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1057' name='L1057'></a>1057 
<a id='L1058' name='L1058'></a>1058 <strong class='reserved'>void</strong>
<a id='L1059' name='L1059'></a>1059 <a href='../R/canonicalize_pathname.html' title='Multiple referred from 18 places.'>canonicalize_pathname</a> (<strong class='reserved'>char</strong> *<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>)
     <em class='comment'>/* <a href='#L836'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1068'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1059 lib/utilunix.c'  /> */</em>
<a id='L1060' name='L1060'></a>1060 <em class='brace'>{</em>
<a id='L1061' name='L1061'></a>1061     <a href='../S/lib--utilunix.c.html#L836' title='Defined at 836 in lib/utilunix.c.'>custom_canonicalize_pathname</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>, <a href='../S/lib--util.h.html#L66' title='Defined at 66 in lib/util.h.'>CANON_PATH_ALL</a>);
<a id='L1062' name='L1062'></a>1062 <em class='brace'>}</em>
<a id='L1063' name='L1063'></a>1063 
<a id='L1064' name='L1064'></a>1064 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1065' name='L1065'></a>1065 
<a id='L1066' name='L1066'></a>1066 <em class='sharp'>#ifdef</em> <a href='../Y/HAVE_GET_PROCESS_STATS.html' title='Multiple used in 2 places.'>HAVE_GET_PROCESS_STATS</a>
<a id='L1067' name='L1067'></a>1067 <strong class='reserved'>int</strong>
<a id='L1068' name='L1068'></a>1068 <a href='../R/gettimeofday.html' title='Multiple referred from 10 places.'>gettimeofday</a> (<strong class='reserved'>struct</strong> <a href='../Y/timeval.html' title='Multiple used in 44 places.'>timeval</a> *<a href='../Y/tp.html' title='Multiple used in 13 places.'>tp</a>, <strong class='reserved'>void</strong> *<a href='../Y/tzp.html' title='Multiple used in 2 places.'>tzp</a>)
     <em class='comment'>/* <a href='#L1059'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1079'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1068 lib/utilunix.c'  /> */</em>
<a id='L1069' name='L1069'></a>1069 <em class='brace'>{</em>
<a id='L1070' name='L1070'></a>1070     (<strong class='reserved'>void</strong>) <a href='../Y/tzp.html' title='Multiple used in 2 places.'>tzp</a>;
<a id='L1071' name='L1071'></a>1071 
<a id='L1072' name='L1072'></a>1072     <strong class='reserved'>return</strong> get_process_stats (<a href='../Y/tp.html' title='Multiple used in 13 places.'>tp</a>, PS_SELF, 0, 0);
<a id='L1073' name='L1073'></a>1073 <em class='brace'>}</em>
<a id='L1074' name='L1074'></a>1074 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_GET_PROCESS_STATS */</em>
<a id='L1075' name='L1075'></a>1075 
<a id='L1076' name='L1076'></a>1076 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1077' name='L1077'></a>1077 
<a id='L1078' name='L1078'></a>1078 <strong class='reserved'>char</strong> *
<a id='L1079' name='L1079'></a>1079 <a href='../R/mc_realpath.html' title='Multiple referred from 7 places.'>mc_realpath</a> (<strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>, <strong class='reserved'>char</strong> *<a href='../Y/resolved_path.html' title='Multiple used in 10 places.'>resolved_path</a>)
     <em class='comment'>/* <a href='#L1068'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1258'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1079 lib/utilunix.c'  /> */</em>
<a id='L1080' name='L1080'></a>1080 <em class='brace'>{</em>
<a id='L1081' name='L1081'></a>1081 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L1082' name='L1082'></a>1082     <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>;
<a id='L1083' name='L1083'></a>1083     <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> <a href='../Y/absolute_path.html' title='Multiple used in 3 places.'>absolute_path</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L1084' name='L1084'></a>1084 
<a id='L1085' name='L1085'></a>1085     <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>))
<a id='L1086' name='L1086'></a>1086     <em class='brace'>{</em>
<a id='L1087' name='L1087'></a>1087         <a href='../Y/absolute_path.html' title='Multiple used in 3 places.'>absolute_path</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L1088' name='L1088'></a>1088         <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>++;
<a id='L1089' name='L1089'></a>1089     <em class='brace'>}</em>
<a id='L1090' name='L1090'></a>1090 
<a id='L1091' name='L1091'></a>1091     <em class='comment'>/* ignore encoding: skip "#enc:" */</em>
<a id='L1092' name='L1092'></a>1092     <strong class='reserved'>if</strong> (<a href='../Y/g_str_has_prefix.html' title='Multiple used in 2 places.'>g_str_has_prefix</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, <a href='../S/lib--vfs--vfs.h.html#L41' title='Defined at 41 in lib/vfs/vfs.h.'>VFS_ENCODING_PREFIX</a>))
<a id='L1093' name='L1093'></a>1093     <em class='brace'>{</em>
<a id='L1094' name='L1094'></a>1094         <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> += <a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../S/lib--vfs--vfs.h.html#L41' title='Defined at 41 in lib/vfs/vfs.h.'>VFS_ENCODING_PREFIX</a>);
<a id='L1095' name='L1095'></a>1095         <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> = <a href='../D/strchr.html' title='Multiple defined in 2 places.'>strchr</a> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>, <a href='../S/lib--global.h.html#L126' title='Defined at 126 in lib/global.h.'>PATH_SEP</a>);
<a id='L1096' name='L1096'></a>1096         <strong class='reserved'>if</strong> (<a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L1097' name='L1097'></a>1097         <em class='brace'>{</em>
<a id='L1098' name='L1098'></a>1098             <strong class='reserved'>if</strong> (!<a href='../Y/absolute_path.html' title='Multiple used in 3 places.'>absolute_path</a> &amp;&amp; <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>[1] != '\0')
<a id='L1099' name='L1099'></a>1099                 <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>++;
<a id='L1100' name='L1100'></a>1100 
<a id='L1101' name='L1101'></a>1101             <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> = <a href='../Y/p.html' title='Multiple used in 2263 places.'>p</a>;
<a id='L1102' name='L1102'></a>1102         <em class='brace'>}</em>
<a id='L1103' name='L1103'></a>1103     <em class='brace'>}</em>
<a id='L1104' name='L1104'></a>1104 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L1105' name='L1105'></a>1105 
<a id='L1106' name='L1106'></a>1106 <em class='sharp'>#ifdef</em> HAVE_REALPATH
<a id='L1107' name='L1107'></a>1107     <strong class='reserved'>return</strong> realpath (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>, <a href='../Y/resolved_path.html' title='Multiple used in 10 places.'>resolved_path</a>);
<a id='L1108' name='L1108'></a>1108 <em class='sharp'>#else</em>
<a id='L1109' name='L1109'></a>1109     <em class='brace'>{</em>
<a id='L1110' name='L1110'></a>1110         <strong class='reserved'>char</strong> <a href='../Y/copy_path.html' title='Multiple used in 6 places.'>copy_path</a>[<a href='../D/PATH_MAX.html' title='Multiple defined in 3 places.'>PATH_MAX</a>];
<a id='L1111' name='L1111'></a>1111         <strong class='reserved'>char</strong> <a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>[<a href='../D/PATH_MAX.html' title='Multiple defined in 3 places.'>PATH_MAX</a>];
<a id='L1112' name='L1112'></a>1112         <strong class='reserved'>char</strong> *<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> = <a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>;
<a id='L1113' name='L1113'></a>1113         <strong class='reserved'>char</strong> *<a href='../Y/max_path.html' title='Multiple used in 3 places.'>max_path</a>;
<a id='L1114' name='L1114'></a>1114 <em class='sharp'>#ifdef</em> <a href='../Y/S_IFLNK.html' title='Multiple used in 6 places.'>S_IFLNK</a>
<a id='L1115' name='L1115'></a>1115         <strong class='reserved'>char</strong> <a href='../Y/link_path.html' title='Multiple used in 6 places.'>link_path</a>[<a href='../D/PATH_MAX.html' title='Multiple defined in 3 places.'>PATH_MAX</a>];
<a id='L1116' name='L1116'></a>1116         <strong class='reserved'>int</strong> <a href='../Y/readlinks.html' title='Multiple used in 2 places.'>readlinks</a> = 0;
<a id='L1117' name='L1117'></a>1117         <strong class='reserved'>int</strong> <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a>;
<a id='L1118' name='L1118'></a>1118 <em class='sharp'>#endif</em> <em class='comment'>/* S_IFLNK */</em>
<a id='L1119' name='L1119'></a>1119 
<a id='L1120' name='L1120'></a>1120         <em class='comment'>/* Make a copy of the source path since we may need to modify it. */</em>
<a id='L1121' name='L1121'></a>1121         <strong class='reserved'>if</strong> (<a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>) &gt;= <a href='../D/PATH_MAX.html' title='Multiple defined in 3 places.'>PATH_MAX</a> - 2)
<a id='L1122' name='L1122'></a>1122         <em class='brace'>{</em>
<a id='L1123' name='L1123'></a>1123             <a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> = <a href='../Y/ENAMETOOLONG.html' title='Multiple used in 4 places.'>ENAMETOOLONG</a>;
<a id='L1124' name='L1124'></a>1124             <strong class='reserved'>return</strong> <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L1125' name='L1125'></a>1125         <em class='brace'>}</em>
<a id='L1126' name='L1126'></a>1126 
<a id='L1127' name='L1127'></a>1127         <a href='../Y/strcpy.html' title='Multiple used in 28 places.'>strcpy</a> (<a href='../Y/copy_path.html' title='Multiple used in 6 places.'>copy_path</a>, <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>);
<a id='L1128' name='L1128'></a>1128         <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> = <a href='../Y/copy_path.html' title='Multiple used in 6 places.'>copy_path</a>;
<a id='L1129' name='L1129'></a>1129         <a href='../Y/max_path.html' title='Multiple used in 3 places.'>max_path</a> = <a href='../Y/copy_path.html' title='Multiple used in 6 places.'>copy_path</a> + <a href='../D/PATH_MAX.html' title='Multiple defined in 3 places.'>PATH_MAX</a> - 2;
<a id='L1130' name='L1130'></a>1130         <em class='comment'>/* If it's a relative pathname use getwd for starters. */</em>
<a id='L1131' name='L1131'></a>1131         <strong class='reserved'>if</strong> (!<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>))
<a id='L1132' name='L1132'></a>1132         <em class='brace'>{</em>
<a id='L1133' name='L1133'></a>1133             <a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> = <a href='../S/tests--lib--vfs--vfs_setup_cwd.c.html#L40' title='Defined at 40 in tests/lib/vfs/vfs_setup_cwd.c.'>g_get_current_dir</a> ();
<a id='L1134' name='L1134'></a>1134             <strong class='reserved'>if</strong> (<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L1135' name='L1135'></a>1135                 <a href='../Y/strcpy.html' title='Multiple used in 28 places.'>strcpy</a> (<a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>, "");
<a id='L1136' name='L1136'></a>1136             <strong class='reserved'>else</strong>
<a id='L1137' name='L1137'></a>1137             <em class='brace'>{</em>
<a id='L1138' name='L1138'></a>1138                 <a href='../Y/g_snprintf.html' title='Multiple used in 106 places.'>g_snprintf</a> (<a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>, <strong class='reserved'>sizeof</strong> (<a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>), "%s", <a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>);
<a id='L1139' name='L1139'></a>1139                 <a href='../Y/g_free.html' title='Multiple used in 1230 places.'>g_free</a> (<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>);
<a id='L1140' name='L1140'></a>1140                 <a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> = <a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>;
<a id='L1141' name='L1141'></a>1141             <em class='brace'>}</em>
<a id='L1142' name='L1142'></a>1142 
<a id='L1143' name='L1143'></a>1143             <a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> += <a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>);
<a id='L1144' name='L1144'></a>1144             <strong class='reserved'>if</strong> (!<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>[-1]))
<a id='L1145' name='L1145'></a>1145                 *<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>++ = <a href='../S/lib--global.h.html#L126' title='Defined at 126 in lib/global.h.'>PATH_SEP</a>;
<a id='L1146' name='L1146'></a>1146         <em class='brace'>}</em>
<a id='L1147' name='L1147'></a>1147         <strong class='reserved'>else</strong>
<a id='L1148' name='L1148'></a>1148         <em class='brace'>{</em>
<a id='L1149' name='L1149'></a>1149             *<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>++ = <a href='../S/lib--global.h.html#L126' title='Defined at 126 in lib/global.h.'>PATH_SEP</a>;
<a id='L1150' name='L1150'></a>1150             <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>++;
<a id='L1151' name='L1151'></a>1151         <em class='brace'>}</em>
<a id='L1152' name='L1152'></a>1152         <em class='comment'>/* Expand each slash-separated pathname component. */</em>
<a id='L1153' name='L1153'></a>1153         <strong class='reserved'>while</strong> (*<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> != '\0')
<a id='L1154' name='L1154'></a>1154         <em class='brace'>{</em>
<a id='L1155' name='L1155'></a>1155             <em class='comment'>/* Ignore stray "/". */</em>
<a id='L1156' name='L1156'></a>1156             <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>))
<a id='L1157' name='L1157'></a>1157             <em class='brace'>{</em>
<a id='L1158' name='L1158'></a>1158                 <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>++;
<a id='L1159' name='L1159'></a>1159                 <strong class='reserved'>continue</strong>;
<a id='L1160' name='L1160'></a>1160             <em class='brace'>}</em>
<a id='L1161' name='L1161'></a>1161             <strong class='reserved'>if</strong> (*<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> == '.')
<a id='L1162' name='L1162'></a>1162             <em class='brace'>{</em>
<a id='L1163' name='L1163'></a>1163                 <em class='comment'>/* Ignore ".". */</em>
<a id='L1164' name='L1164'></a>1164                 <strong class='reserved'>if</strong> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>[1] == '\0' || <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>[1]))
<a id='L1165' name='L1165'></a>1165                 <em class='brace'>{</em>
<a id='L1166' name='L1166'></a>1166                     <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>++;
<a id='L1167' name='L1167'></a>1167                     <strong class='reserved'>continue</strong>;
<a id='L1168' name='L1168'></a>1168                 <em class='brace'>}</em>
<a id='L1169' name='L1169'></a>1169                 <strong class='reserved'>if</strong> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>[1] == '.')
<a id='L1170' name='L1170'></a>1170                 <em class='brace'>{</em>
<a id='L1171' name='L1171'></a>1171                     <strong class='reserved'>if</strong> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>[2] == '\0' || <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>[2]))
<a id='L1172' name='L1172'></a>1172                     <em class='brace'>{</em>
<a id='L1173' name='L1173'></a>1173                         <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> += 2;
<a id='L1174' name='L1174'></a>1174                         <em class='comment'>/* Ignore ".." at root. */</em>
<a id='L1175' name='L1175'></a>1175                         <strong class='reserved'>if</strong> (<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> == <a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a> + 1)
<a id='L1176' name='L1176'></a>1176                             <strong class='reserved'>continue</strong>;
<a id='L1177' name='L1177'></a>1177                         <em class='comment'>/* Handle ".." by backing up. */</em>
<a id='L1178' name='L1178'></a>1178                         <strong class='reserved'>while</strong> (!<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> ((--<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>)[-1]))
<a id='L1179' name='L1179'></a>1179                             ;
<a id='L1180' name='L1180'></a>1180                         <strong class='reserved'>continue</strong>;
<a id='L1181' name='L1181'></a>1181                     <em class='brace'>}</em>
<a id='L1182' name='L1182'></a>1182                 <em class='brace'>}</em>
<a id='L1183' name='L1183'></a>1183             <em class='brace'>}</em>
<a id='L1184' name='L1184'></a>1184             <em class='comment'>/* Safely copy the next pathname component. */</em>
<a id='L1185' name='L1185'></a>1185             <strong class='reserved'>while</strong> (*<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> != '\0' &amp;&amp; !<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>))
<a id='L1186' name='L1186'></a>1186             <em class='brace'>{</em>
<a id='L1187' name='L1187'></a>1187                 <strong class='reserved'>if</strong> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> &gt; <a href='../Y/max_path.html' title='Multiple used in 3 places.'>max_path</a>)
<a id='L1188' name='L1188'></a>1188                 <em class='brace'>{</em>
<a id='L1189' name='L1189'></a>1189                     <a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> = <a href='../Y/ENAMETOOLONG.html' title='Multiple used in 4 places.'>ENAMETOOLONG</a>;
<a id='L1190' name='L1190'></a>1190                     <strong class='reserved'>return</strong> <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L1191' name='L1191'></a>1191                 <em class='brace'>}</em>
<a id='L1192' name='L1192'></a>1192                 *<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>++ = *<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>++;
<a id='L1193' name='L1193'></a>1193             <em class='brace'>}</em>
<a id='L1194' name='L1194'></a>1194 <em class='sharp'>#ifdef</em> <a href='../Y/S_IFLNK.html' title='Multiple used in 6 places.'>S_IFLNK</a>
<a id='L1195' name='L1195'></a>1195             <em class='comment'>/* Protect against infinite loops. */</em>
<a id='L1196' name='L1196'></a>1196             <strong class='reserved'>if</strong> (<a href='../Y/readlinks.html' title='Multiple used in 2 places.'>readlinks</a>++ &gt; <a href='../S/lib--util.h.html#L20' title='Defined at 20 in lib/util.h.'>MAXSYMLINKS</a>)
<a id='L1197' name='L1197'></a>1197             <em class='brace'>{</em>
<a id='L1198' name='L1198'></a>1198                 <a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> = <a href='../Y/ELOOP.html' title='Multiple used in 4 places.'>ELOOP</a>;
<a id='L1199' name='L1199'></a>1199                 <strong class='reserved'>return</strong> <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L1200' name='L1200'></a>1200             <em class='brace'>}</em>
<a id='L1201' name='L1201'></a>1201             <em class='comment'>/* See if latest pathname component is a symlink. */</em>
<a id='L1202' name='L1202'></a>1202             *<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> = '\0';
<a id='L1203' name='L1203'></a>1203             <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a> = <a href='../Y/readlink.html' title='Multiple used in 14 places.'>readlink</a> (<a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>, <a href='../Y/link_path.html' title='Multiple used in 6 places.'>link_path</a>, <a href='../D/PATH_MAX.html' title='Multiple defined in 3 places.'>PATH_MAX</a> - 1);
<a id='L1204' name='L1204'></a>1204             <strong class='reserved'>if</strong> (<a href='../Y/n.html' title='Multiple used in 370 places.'>n</a> &lt; 0)
<a id='L1205' name='L1205'></a>1205             <em class='brace'>{</em>
<a id='L1206' name='L1206'></a>1206                 <em class='comment'>/* EINVAL means the file exists but isn't a symlink. */</em>
<a id='L1207' name='L1207'></a>1207                 <strong class='reserved'>if</strong> (<a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> != <a href='../Y/EINVAL.html' title='Multiple used in 13 places.'>EINVAL</a>)
<a id='L1208' name='L1208'></a>1208                 <em class='brace'>{</em>
<a id='L1209' name='L1209'></a>1209                     <em class='comment'>/* Make sure it's null terminated. */</em>
<a id='L1210' name='L1210'></a>1210                     *<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> = '\0';
<a id='L1211' name='L1211'></a>1211                     <a href='../Y/strcpy.html' title='Multiple used in 28 places.'>strcpy</a> (<a href='../Y/resolved_path.html' title='Multiple used in 10 places.'>resolved_path</a>, <a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>);
<a id='L1212' name='L1212'></a>1212                     <strong class='reserved'>return</strong> <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L1213' name='L1213'></a>1213                 <em class='brace'>}</em>
<a id='L1214' name='L1214'></a>1214             <em class='brace'>}</em>
<a id='L1215' name='L1215'></a>1215             <strong class='reserved'>else</strong>
<a id='L1216' name='L1216'></a>1216             <em class='brace'>{</em>
<a id='L1217' name='L1217'></a>1217                 <em class='comment'>/* Note: readlink doesn't add the null byte. */</em>
<a id='L1218' name='L1218'></a>1218                 <a href='../Y/link_path.html' title='Multiple used in 6 places.'>link_path</a>[<a href='../Y/n.html' title='Multiple used in 370 places.'>n</a>] = '\0';
<a id='L1219' name='L1219'></a>1219                 <strong class='reserved'>if</strong> (<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/link_path.html' title='Multiple used in 6 places.'>link_path</a>))
<a id='L1220' name='L1220'></a>1220                     <em class='comment'>/* Start over for an absolute symlink. */</em>
<a id='L1221' name='L1221'></a>1221                     <a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> = <a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>;
<a id='L1222' name='L1222'></a>1222                 <strong class='reserved'>else</strong>
<a id='L1223' name='L1223'></a>1223                     <em class='comment'>/* Otherwise back up over this component. */</em>
<a id='L1224' name='L1224'></a>1224                     <strong class='reserved'>while</strong> (!<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*(--<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>)))
<a id='L1225' name='L1225'></a>1225                         ;
<a id='L1226' name='L1226'></a>1226                 <em class='comment'>/* Safe sex check. */</em>
<a id='L1227' name='L1227'></a>1227                 <strong class='reserved'>if</strong> (<a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>) + <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a> &gt;= <a href='../D/PATH_MAX.html' title='Multiple defined in 3 places.'>PATH_MAX</a> - 2)
<a id='L1228' name='L1228'></a>1228                 <em class='brace'>{</em>
<a id='L1229' name='L1229'></a>1229                     <a href='../Y/errno.html' title='Multiple used in 247 places.'>errno</a> = <a href='../Y/ENAMETOOLONG.html' title='Multiple used in 4 places.'>ENAMETOOLONG</a>;
<a id='L1230' name='L1230'></a>1230                     <strong class='reserved'>return</strong> <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L1231' name='L1231'></a>1231                 <em class='brace'>}</em>
<a id='L1232' name='L1232'></a>1232                 <em class='comment'>/* Insert symlink contents into path. */</em>
<a id='L1233' name='L1233'></a>1233                 <a href='../Y/strcat.html' title='Multiple used in 15 places.'>strcat</a> (<a href='../Y/link_path.html' title='Multiple used in 6 places.'>link_path</a>, <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>);
<a id='L1234' name='L1234'></a>1234                 <a href='../Y/strcpy.html' title='Multiple used in 28 places.'>strcpy</a> (<a href='../Y/copy_path.html' title='Multiple used in 6 places.'>copy_path</a>, <a href='../Y/link_path.html' title='Multiple used in 6 places.'>link_path</a>);
<a id='L1235' name='L1235'></a>1235                 <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> = <a href='../Y/copy_path.html' title='Multiple used in 6 places.'>copy_path</a>;
<a id='L1236' name='L1236'></a>1236             <em class='brace'>}</em>
<a id='L1237' name='L1237'></a>1237 <em class='sharp'>#endif</em> <em class='comment'>/* S_IFLNK */</em>
<a id='L1238' name='L1238'></a>1238             *<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>++ = <a href='../S/lib--global.h.html#L126' title='Defined at 126 in lib/global.h.'>PATH_SEP</a>;
<a id='L1239' name='L1239'></a>1239         <em class='brace'>}</em>
<a id='L1240' name='L1240'></a>1240         <em class='comment'>/* Delete trailing slash but don't whomp a lone slash. */</em>
<a id='L1241' name='L1241'></a>1241         <strong class='reserved'>if</strong> (<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> != <a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a> + 1 &amp;&amp; <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>[-1]))
<a id='L1242' name='L1242'></a>1242             <a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a>--;
<a id='L1243' name='L1243'></a>1243         <em class='comment'>/* Make sure it's null terminated. */</em>
<a id='L1244' name='L1244'></a>1244         *<a href='../Y/new_path.html' title='Multiple used in 21 places.'>new_path</a> = '\0';
<a id='L1245' name='L1245'></a>1245         <a href='../Y/strcpy.html' title='Multiple used in 28 places.'>strcpy</a> (<a href='../Y/resolved_path.html' title='Multiple used in 10 places.'>resolved_path</a>, <a href='../Y/got_path.html' title='Multiple used in 12 places.'>got_path</a>);
<a id='L1246' name='L1246'></a>1246         <strong class='reserved'>return</strong> <a href='../Y/resolved_path.html' title='Multiple used in 10 places.'>resolved_path</a>;
<a id='L1247' name='L1247'></a>1247     <em class='brace'>}</em>
<a id='L1248' name='L1248'></a>1248 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_REALPATH */</em>
<a id='L1249' name='L1249'></a>1249 <em class='brace'>}</em>
<a id='L1250' name='L1250'></a>1250 
<a id='L1251' name='L1251'></a>1251 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1252' name='L1252'></a>1252 <em class='comment'>/**</em>
<a id='L1253' name='L1253'></a>1253 <em class='comment'> * Return the index of the permissions triplet</em>
<a id='L1254' name='L1254'></a>1254 <em class='comment'> *</em>
<a id='L1255' name='L1255'></a>1255 <em class='comment'> */</em>
<a id='L1256' name='L1256'></a>1256 
<a id='L1257' name='L1257'></a>1257 <strong class='reserved'>int</strong>
<a id='L1258' name='L1258'></a>1258 <a href='../R/get_user_permissions.html' title='Multiple referred from 2 places.'>get_user_permissions</a> (<strong class='reserved'>struct</strong> <a href='../Y/stat.html' title='Multiple used in 258 places.'>stat</a> *<a href='../Y/st.html' title='Multiple used in 447 places.'>st</a>)
     <em class='comment'>/* <a href='#L1079'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1309'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1258 lib/utilunix.c'  /> */</em>
<a id='L1259' name='L1259'></a>1259 <em class='brace'>{</em>
<a id='L1260' name='L1260'></a>1260     <strong class='reserved'>static</strong> <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> <a href='../Y/initialized.html' title='Multiple used in 9 places.'>initialized</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L1261' name='L1261'></a>1261     <strong class='reserved'>static</strong> <a href='../Y/gid_t.html' title='Multiple used in 47 places.'>gid_t</a> *<a href='../Y/groups.html' title='Multiple used in 40 places.'>groups</a>;
<a id='L1262' name='L1262'></a>1262     <strong class='reserved'>static</strong> <strong class='reserved'>int</strong> <a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a>;
<a id='L1263' name='L1263'></a>1263     <strong class='reserved'>static</strong> <a href='../Y/uid_t.html' title='Multiple used in 48 places.'>uid_t</a> <a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a>;
<a id='L1264' name='L1264'></a>1264     <strong class='reserved'>int</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>;
<a id='L1265' name='L1265'></a>1265 
<a id='L1266' name='L1266'></a>1266     <strong class='reserved'>if</strong> (!<a href='../Y/initialized.html' title='Multiple used in 9 places.'>initialized</a>)
<a id='L1267' name='L1267'></a>1267     <em class='brace'>{</em>
<a id='L1268' name='L1268'></a>1268         <a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a> = <a href='../Y/geteuid.html' title='Multiple used in 14 places.'>geteuid</a> ();
<a id='L1269' name='L1269'></a>1269 
<a id='L1270' name='L1270'></a>1270         <a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a> = <a href='../Y/getgroups.html' title='Multiple used in 2 places.'>getgroups</a> (0, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L1271' name='L1271'></a>1271         <strong class='reserved'>if</strong> (<a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a> == -1)
<a id='L1272' name='L1272'></a>1272             <a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a> = 0;        <em class='comment'>/* ignore errors */</em>
<a id='L1273' name='L1273'></a>1273 
<a id='L1274' name='L1274'></a>1274         <em class='comment'>/* allocate space for one element in addition to what</em>
<a id='L1275' name='L1275'></a>1275 <em class='comment'>         * will be filled by getgroups(). */</em>
<a id='L1276' name='L1276'></a>1276         <a href='../Y/groups.html' title='Multiple used in 40 places.'>groups</a> = <a href='../Y/g_new.html' title='Multiple used in 66 places.'>g_new</a> (<a href='../Y/gid_t.html' title='Multiple used in 47 places.'>gid_t</a>, <a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a> + 1);
<a id='L1277' name='L1277'></a>1277 
<a id='L1278' name='L1278'></a>1278         <strong class='reserved'>if</strong> (<a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a> != 0)
<a id='L1279' name='L1279'></a>1279         <em class='brace'>{</em>
<a id='L1280' name='L1280'></a>1280             <a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a> = <a href='../Y/getgroups.html' title='Multiple used in 2 places.'>getgroups</a> (<a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a>, <a href='../Y/groups.html' title='Multiple used in 40 places.'>groups</a>);
<a id='L1281' name='L1281'></a>1281             <strong class='reserved'>if</strong> (<a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a> == -1)
<a id='L1282' name='L1282'></a>1282                 <a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a> = 0;    <em class='comment'>/* ignore errors */</em>
<a id='L1283' name='L1283'></a>1283         <em class='brace'>}</em>
<a id='L1284' name='L1284'></a>1284 
<a id='L1285' name='L1285'></a>1285         <em class='comment'>/* getgroups() may or may not return the effective group ID,</em>
<a id='L1286' name='L1286'></a>1286 <em class='comment'>         * so we always include it at the end of the list. */</em>
<a id='L1287' name='L1287'></a>1287         <a href='../Y/groups.html' title='Multiple used in 40 places.'>groups</a>[<a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a>++] = getegid ();
<a id='L1288' name='L1288'></a>1288 
<a id='L1289' name='L1289'></a>1289         <a href='../Y/initialized.html' title='Multiple used in 9 places.'>initialized</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L1290' name='L1290'></a>1290     <em class='brace'>}</em>
<a id='L1291' name='L1291'></a>1291 
<a id='L1292' name='L1292'></a>1292     <strong class='reserved'>if</strong> (<a href='../Y/st.html' title='Multiple used in 447 places.'>st</a>-&gt;<a href='../Y/st_uid.html' title='Multiple used in 48 places.'>st_uid</a> == <a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a> || <a href='../Y/uid.html' title='Multiple used in 41 places.'>uid</a> == 0)
<a id='L1293' name='L1293'></a>1293         <strong class='reserved'>return</strong> 0;
<a id='L1294' name='L1294'></a>1294 
<a id='L1295' name='L1295'></a>1295     <strong class='reserved'>for</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = 0; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/ngroups.html' title='Multiple used in 19 places.'>ngroups</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L1296' name='L1296'></a>1296         <strong class='reserved'>if</strong> (<a href='../Y/st.html' title='Multiple used in 447 places.'>st</a>-&gt;<a href='../Y/st_gid.html' title='Multiple used in 41 places.'>st_gid</a> == <a href='../Y/groups.html' title='Multiple used in 40 places.'>groups</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>])
<a id='L1297' name='L1297'></a>1297             <strong class='reserved'>return</strong> 1;
<a id='L1298' name='L1298'></a>1298 
<a id='L1299' name='L1299'></a>1299     <strong class='reserved'>return</strong> 2;
<a id='L1300' name='L1300'></a>1300 <em class='brace'>}</em>
<a id='L1301' name='L1301'></a>1301 
<a id='L1302' name='L1302'></a>1302 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1303' name='L1303'></a>1303 <em class='comment'>/**</em>
<a id='L1304' name='L1304'></a>1304 <em class='comment'> * Build filename from arguments.</em>
<a id='L1305' name='L1305'></a>1305 <em class='comment'> * Like to g_build_filename(), but respect VFS_PATH_URL_DELIMITER</em>
<a id='L1306' name='L1306'></a>1306 <em class='comment'> */</em>
<a id='L1307' name='L1307'></a>1307 
<a id='L1308' name='L1308'></a>1308 <strong class='reserved'>char</strong> *
<a id='L1309' name='L1309'></a>1309 <a href='../R/mc_build_filenamev.html' title='Multiple referred from 4 places.'>mc_build_filenamev</a> (<strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/first_element.html' title='Multiple used in 19 places.'>first_element</a>, <a href='../Y/va_list.html' title='Multiple used in 43 places.'>va_list</a> <a href='../Y/args.html' title='Multiple used in 109 places.'>args</a>)
     <em class='comment'>/* <a href='#L1258'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1366'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1309 lib/utilunix.c'  /> */</em>
<a id='L1310' name='L1310'></a>1310 <em class='brace'>{</em>
<a id='L1311' name='L1311'></a>1311     <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> <a href='../Y/absolute.html' title='Multiple used in 5 places.'>absolute</a>;
<a id='L1312' name='L1312'></a>1312     <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/element.html' title='Multiple used in 167 places.'>element</a> = <a href='../Y/first_element.html' title='Multiple used in 19 places.'>first_element</a>;
<a id='L1313' name='L1313'></a>1313     <a href='../Y/GString.html' title='Multiple used in 219 places.'>GString</a> *<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>;
<a id='L1314' name='L1314'></a>1314     <strong class='reserved'>char</strong> *<a href='../Y/ret.html' title='Multiple used in 1090 places.'>ret</a>;
<a id='L1315' name='L1315'></a>1315 
<a id='L1316' name='L1316'></a>1316     <strong class='reserved'>if</strong> (<a href='../Y/element.html' title='Multiple used in 167 places.'>element</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L1317' name='L1317'></a>1317         <strong class='reserved'>return</strong> <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L1318' name='L1318'></a>1318 
<a id='L1319' name='L1319'></a>1319     <a href='../Y/path.html' title='Multiple used in 494 places.'>path</a> = <a href='../Y/g_string_new.html' title='Multiple used in 46 places.'>g_string_new</a> ("");
<a id='L1320' name='L1320'></a>1320 
<a id='L1321' name='L1321'></a>1321     <a href='../Y/absolute.html' title='Multiple used in 5 places.'>absolute</a> = <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (*<a href='../Y/first_element.html' title='Multiple used in 19 places.'>first_element</a>);
<a id='L1322' name='L1322'></a>1322 
<a id='L1323' name='L1323'></a>1323     <strong class='reserved'>do</strong>
<a id='L1324' name='L1324'></a>1324     <em class='brace'>{</em>
<a id='L1325' name='L1325'></a>1325         <strong class='reserved'>if</strong> (*<a href='../Y/element.html' title='Multiple used in 167 places.'>element</a> == '\0')
<a id='L1326' name='L1326'></a>1326             <a href='../Y/element.html' title='Multiple used in 167 places.'>element</a> = <a href='../Y/va_arg.html' title='Multiple used in 17 places.'>va_arg</a> (<a href='../Y/args.html' title='Multiple used in 109 places.'>args</a>, <strong class='reserved'>char</strong> *);
<a id='L1327' name='L1327'></a>1327         <strong class='reserved'>else</strong>
<a id='L1328' name='L1328'></a>1328         <em class='brace'>{</em>
<a id='L1329' name='L1329'></a>1329             <strong class='reserved'>char</strong> *<a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a>;
<a id='L1330' name='L1330'></a>1330             <a href='../Y/size_t.html' title='Multiple used in 726 places.'>size_t</a> <a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a>;
<a id='L1331' name='L1331'></a>1331             <strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../S/src--editor--etags.c.html#L179' title='Defined at 179 in src/editor/etags.c.'>start</a>;
<a id='L1332' name='L1332'></a>1332 
<a id='L1333' name='L1333'></a>1333             <a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a> = <a href='../Y/g_strdup.html' title='Multiple used in 444 places.'>g_strdup</a> (<a href='../Y/element.html' title='Multiple used in 167 places.'>element</a>);
<a id='L1334' name='L1334'></a>1334 
<a id='L1335' name='L1335'></a>1335             <a href='../Y/element.html' title='Multiple used in 167 places.'>element</a> = <a href='../Y/va_arg.html' title='Multiple used in 17 places.'>va_arg</a> (<a href='../Y/args.html' title='Multiple used in 109 places.'>args</a>, <strong class='reserved'>char</strong> *);
<a id='L1336' name='L1336'></a>1336 
<a id='L1337' name='L1337'></a>1337             <a href='../S/lib--utilunix.c.html#L1059' title='Defined at 1059 in lib/utilunix.c.'>canonicalize_pathname</a> (<a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a>);
<a id='L1338' name='L1338'></a>1338             <a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> = <a href='../Y/strlen.html' title='Multiple used in 281 places.'>strlen</a> (<a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a>);
<a id='L1339' name='L1339'></a>1339             <a href='../S/src--editor--etags.c.html#L179' title='Defined at 179 in src/editor/etags.c.'>start</a> = <a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a>[0]) ? <a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a> + 1 : <a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a>;
<a id='L1340' name='L1340'></a>1340 
<a id='L1341' name='L1341'></a>1341             <a href='../Y/g_string_append.html' title='Multiple used in 106 places.'>g_string_append</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>, <a href='../S/src--editor--etags.c.html#L179' title='Defined at 179 in src/editor/etags.c.'>start</a>);
<a id='L1342' name='L1342'></a>1342             <strong class='reserved'>if</strong> (!<a href='../S/lib--global.h.html#L128' title='Defined at 128 in lib/global.h.'>IS_PATH_SEP</a> (<a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a>[<a href='../Y/len.html' title='Multiple used in 1086 places.'>len</a> - 1]) &amp;&amp; <a href='../Y/element.html' title='Multiple used in 167 places.'>element</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L1343' name='L1343'></a>1343                 <a href='../Y/g_string_append_c.html' title='Multiple used in 107 places.'>g_string_append_c</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>, <a href='../S/lib--global.h.html#L126' title='Defined at 126 in lib/global.h.'>PATH_SEP</a>);
<a id='L1344' name='L1344'></a>1344 
<a id='L1345' name='L1345'></a>1345             <a href='../Y/g_free.html' title='Multiple used in 1230 places.'>g_free</a> (<a href='../Y/tmp_element.html' title='Multiple used in 7 places.'>tmp_element</a>);
<a id='L1346' name='L1346'></a>1346         <em class='brace'>}</em>
<a id='L1347' name='L1347'></a>1347     <em class='brace'>}</em>
<a id='L1348' name='L1348'></a>1348     <strong class='reserved'>while</strong> (<a href='../Y/element.html' title='Multiple used in 167 places.'>element</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L1349' name='L1349'></a>1349 
<a id='L1350' name='L1350'></a>1350     <strong class='reserved'>if</strong> (<a href='../Y/absolute.html' title='Multiple used in 5 places.'>absolute</a>)
<a id='L1351' name='L1351'></a>1351         <a href='../Y/g_string_prepend_c.html' title='Multiple used in 5 places.'>g_string_prepend_c</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>, <a href='../S/lib--global.h.html#L126' title='Defined at 126 in lib/global.h.'>PATH_SEP</a>);
<a id='L1352' name='L1352'></a>1352 
<a id='L1353' name='L1353'></a>1353     <a href='../Y/ret.html' title='Multiple used in 1090 places.'>ret</a> = <a href='../Y/g_string_free.html' title='Multiple used in 150 places.'>g_string_free</a> (<a href='../Y/path.html' title='Multiple used in 494 places.'>path</a>, <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>);
<a id='L1354' name='L1354'></a>1354     <a href='../S/lib--utilunix.c.html#L1059' title='Defined at 1059 in lib/utilunix.c.'>canonicalize_pathname</a> (<a href='../Y/ret.html' title='Multiple used in 1090 places.'>ret</a>);
<a id='L1355' name='L1355'></a>1355 
<a id='L1356' name='L1356'></a>1356     <strong class='reserved'>return</strong> <a href='../Y/ret.html' title='Multiple used in 1090 places.'>ret</a>;
<a id='L1357' name='L1357'></a>1357 <em class='brace'>}</em>
<a id='L1358' name='L1358'></a>1358 
<a id='L1359' name='L1359'></a>1359 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1360' name='L1360'></a>1360 <em class='comment'>/**</em>
<a id='L1361' name='L1361'></a>1361 <em class='comment'> * Build filename from arguments.</em>
<a id='L1362' name='L1362'></a>1362 <em class='comment'> * Like to g_build_filename(), but respect VFS_PATH_URL_DELIMITER</em>
<a id='L1363' name='L1363'></a>1363 <em class='comment'> */</em>
<a id='L1364' name='L1364'></a>1364 
<a id='L1365' name='L1365'></a>1365 <strong class='reserved'>char</strong> *
<a id='L1366' name='L1366'></a>1366 <a href='../R/mc_build_filename.html' title='Multiple referred from 41 places.'>mc_build_filename</a> (<strong class='reserved'>const</strong> <strong class='reserved'>char</strong> *<a href='../Y/first_element.html' title='Multiple used in 19 places.'>first_element</a>, ...)
     <em class='comment'>/* <a href='#L1309'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><img class='icon' src='../icons/n_right.png' alt='[next]' /><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><img class='icon' src='../icons/n_last.png' alt='[last]' /><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1366 lib/utilunix.c'  /> */</em>
<a id='L1367' name='L1367'></a>1367 <em class='brace'>{</em>
<a id='L1368' name='L1368'></a>1368     <a href='../Y/va_list.html' title='Multiple used in 43 places.'>va_list</a> <a href='../Y/args.html' title='Multiple used in 109 places.'>args</a>;
<a id='L1369' name='L1369'></a>1369     <strong class='reserved'>char</strong> *<a href='../Y/ret.html' title='Multiple used in 1090 places.'>ret</a>;
<a id='L1370' name='L1370'></a>1370 
<a id='L1371' name='L1371'></a>1371     <strong class='reserved'>if</strong> (<a href='../Y/first_element.html' title='Multiple used in 19 places.'>first_element</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L1372' name='L1372'></a>1372         <strong class='reserved'>return</strong> <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>;
<a id='L1373' name='L1373'></a>1373 
<a id='L1374' name='L1374'></a>1374     <a href='../Y/va_start.html' title='Multiple used in 41 places.'>va_start</a> (<a href='../Y/args.html' title='Multiple used in 109 places.'>args</a>, <a href='../Y/first_element.html' title='Multiple used in 19 places.'>first_element</a>);
<a id='L1375' name='L1375'></a>1375     <a href='../Y/ret.html' title='Multiple used in 1090 places.'>ret</a> = <a href='../S/lib--utilunix.c.html#L1309' title='Defined at 1309 in lib/utilunix.c.'>mc_build_filenamev</a> (<a href='../Y/first_element.html' title='Multiple used in 19 places.'>first_element</a>, <a href='../Y/args.html' title='Multiple used in 109 places.'>args</a>);
<a id='L1376' name='L1376'></a>1376     <a href='../Y/va_end.html' title='Multiple used in 38 places.'>va_end</a> (<a href='../Y/args.html' title='Multiple used in 109 places.'>args</a>);
<a id='L1377' name='L1377'></a>1377     <strong class='reserved'>return</strong> <a href='../Y/ret.html' title='Multiple used in 1090 places.'>ret</a>;
<a id='L1378' name='L1378'></a>1378 <em class='brace'>}</em>
<a id='L1379' name='L1379'></a>1379 
<a id='L1380' name='L1380'></a>1380 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
</pre>
<hr />
<a id='BOTTOM' name='BOTTOM'></a>
<em class='comment'>/* <img class='icon' src='../icons/n_left.png' alt='[previous]' /><img class='icon' src='../icons/n_right.png' alt='[next]' /><a href='#L128'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1366'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><img class='icon' src='../icons/n_bottom.png' alt='[bottom]' /><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1380 lib/utilunix.c'  /> */</em>
</body>
</html>
